Spark数据集:如何在flatmap之后更改列的别名?

时间:2017-10-05 01:21:36

标签: apache-spark apache-spark-dataset

我有两个我想加入的火花数据集。连接键嵌套在数据集A中,因此我必须先将其平面映射,然后再加入数据集B.问题是,只要我平面映射该字段,列名就会变为默认的“_1”,“_ 2”等。是否有可能以某种方式改变别名?

A.flatMap(a => a.keys).join(B).where(...)

1 个答案:

答案 0 :(得分:1)

应用flatMap之类的转换后,您会丢失符合逻辑的列,因为在应用flatMapmap之类的转换后,它不能保证每个列中的列数或数据类型列保持不变。这就是我们在那里丢失列名的原因。

您可以执行的操作是,您可以获取之前的所有列,然后将其应用于数据集,如下所示: -

val columns =  A.columns
A.flatMap(a => a.keys).toDF(columns:_ *).join(B).where(...)

这仅适用于应用flatmap

后列数相同的情况

希望这能解决你的问题

由于