0
我有两个我试图加入的spark数据集。连接键嵌套在数据集A中,所以在加入数据集B之前,我必须首先将其平面化。问题是,只要我平滑映射该字段,列名就成为默认的“_1”,“_2”等。是否有可能以某种方式更改别名?Spark数据集:如何在平面图之后更改列的别名?
A.flatMap(a => a.keys).join(B).where(...)
我有两个我试图加入的spark数据集。连接键嵌套在数据集A中,所以在加入数据集B之前,我必须首先将其平面化。问题是,只要我平滑映射该字段,列名就成为默认的“_1”,“_2”等。是否有可能以某种方式更改别名?Spark数据集:如何在平面图之后更改列的别名?
A.flatMap(a => a.keys).join(B).where(...)
应用转换像flatMap
后你就失去了列,这是合乎逻辑的应用转型像flatMap
或map
它并不能保证以后的每一列中列或数据类型的数量保持在same.That的为什么我们在那里失去了专栏名称。
你可以做的是,你可以获取所有前一列,然后把它应用到数据集是这样的: - 应用flatmap
val columns = A.columns
A.flatMap(a => a.keys).toDF(columns:_ *).join(B).where(...)
这只会工作,如果列数是相同的
希望这将清除您的问题
感谢
你可以复制你的代码,不知道为什么你需要flatmap别名 –