小编Eli*_*Eli的帖子

Struct 和 MapType 有什么区别,以及如何在 Struct 上添加字段?

我尝试了解何时使用 Struct 以及何时使用 Map,因为两者都可以用作嵌套文档,例如
{field1 :value1 , field2 : value2}

我认为 struct 有一个模式,而 map 没有。另外,我认为 Map 可以将除 null 之外的所有类型作为键值,而结构只能将字符串作为键值?还有性能呢?


withField(String fieldName, Column col)但后来我发现我可以使用以下方法在结构上添加字段Column

所以我尝试写一个

public static Column aggregate(Column expr,
                               Column initialValue,
                               scala.Function2<Column,Column,Column> merge)
Run Code Online (Sandbox Code Playgroud)

并在每个步骤中使用以下命令将字段添加到结构中withField

我得到了这种类型不匹配,就像说结构应该只有字段"a",但我试图添加"ab"违反架构的字段

due to data type mismatch: argument 3 requires struct<a:string>, but got struct<a:string,ab:string>

我开始尝试{"a" : "b"}将这对添加"ab" "ewr"到聚合函数中。

*我在地图上尝试了同样的操作,效果很好,添加了该字段。

我可以解决这个问题,并将“ab”字段添加到结构中吗?如果不是的话,withField如果我们不能真正在结构上添加字段,为什么我们有这个?还是只有Map可以做到?我更喜欢使用 Map 中的结构,但我不确定何时使用每个结构。

apache-spark apache-spark-sql

3
推荐指数
1
解决办法
4170
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1