2017-10-05 30 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(...) 

這隻會工作,如果列數是相同的

希望這將清除您的問題

感謝

相關問題