【发布时间】:2016-12-20 18:34:32
【问题描述】:
使用 DataFrames,可以使用 df.withColumnRename("oldName", "newName") 简单地重命名列。在数据集中,由于每个字段都被键入和命名,这似乎是不可能的。我能想到的唯一解决方法是在数据集上使用map:
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|
+---+--------+
这似乎只是重命名列的一种非常迂回且低效的方法。有没有更好的办法?
【问题讨论】:
标签: apache-spark apache-spark-dataset