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別名 –