С 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|
+---+--------+
Это кажется очень окольным и неэффективным способом просто переименовать столбец. Есть ли способ лучше?