我尝试了解何时使用 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 中的结构,但我不确定何时使用每个结构。