2017-10-05 81 views
0

我有两个我试图加入的spark数据集。连接键嵌套在数据集A中,所以在加入数据集B之前,我必须首先将其平面化。问题是,只要我平滑映射该字段,列名就成为默认的“_1”,“_2”等。是否有可能以某种方式更改别名?Spark数据集:如何在平面图之后更改列的别名?

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

+0

你可以复制你的代码,不知道为什么你需要flatmap别名 –

回答

1

应用转换像flatMap后你就失去了列,这是合乎逻辑的应用转型像flatMapmap它并不能保证以后的每一列中列或数据类型的数量保持在same.That的为什么我们在那里失去了专栏名称。

你可以做的是,你可以获取所有前一列,然后把它应用到数据集是这样的: - 应用flatmap

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

这只会工作,如果列数是相同的

希望这将清除您的问题

感谢

相关问题