我有两个我想加入的火花数据集。连接键嵌套在数据集A中,因此我必须先将其平面映射,然后再加入数据集B.问题是,只要我平面映射该字段,列名就会变为默认的“_1”,“_ 2”等。是否有可能以某种方式改变别名?
A.flatMap(a => a.keys).join(B).where(...)
答案 0 :(得分:1)
应用flatMap
之类的转换后,您会丢失符合逻辑的列,因为在应用flatMap
或map
之类的转换后,它不能保证每个列中的列数或数据类型列保持不变。这就是我们在那里丢失列名的原因。
您可以执行的操作是,您可以获取之前的所有列,然后将其应用于数据集,如下所示: -
val columns = A.columns
A.flatMap(a => a.keys).toDF(columns:_ *).join(B).where(...)
这仅适用于应用flatmap
希望这能解决你的问题
由于