2
使用DataFrame,可以使用df.withColumnRename("oldName", "newName")
簡單重命名列。在數據集中,由於每個字段都是鍵入和命名的,所以這似乎不可行。圍繞我能想到的唯一工作就是對數據集使用map
:如何高效重命名數據集中的列(Spark 2.0)
case class Orig(a: Int, b: Int)
case class OrigRenamed(a: Int, bNewName: Int)
val origDS = Seq(Orig(1,2), Orig(3,4)).toDS
origDS.show
+---+---+
| a| b|
+---+---+
| 1| 2|
| 3| 4|
+---+---+
// To rename with map
val origRenamedDS = origDS.map{ case Orig(x,y) => OrigRenamed(x,y) }
origRenamed.show
+---+--------+
| a|bNewName|
+---+--------+
| 1| 2|
| 3| 4|
+---+--------+
這似乎是一個很迂迴的和低效的方式只是重命名列。有沒有更好的辦法?
我試圖避免下降到'Dataframe',並只使用類型安全'數據集'操作。但我明白你的觀點,謝謝! – Janie
好吧,但如果你映射一個數據集,結果是一個數據集,比如Ints。現在你有一個Ints數據集,並且該列被命名爲「value」,但也許你想稱之爲「myInt」 –