2
DataFrames를 사용하면 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|
+---+--------+
이 그냥 열 이름을 바꿀 수있는 매우 라운드에 대한 비효율적 인 방법을 보인다. 더 좋은 방법이 있습니까?
origDS.toDF("a", "bNewName").as[OrigRenamed]
그러나 실제로 이름 바꾸기에
단순히 의미가없는 정적Dataset
를 입력에 :
나는'Dataframe'으로 내려가는 것을 피하려고했고, 타입 안전'Dataset' 연산 만 사용하려고했습니다. 그러나 나는 당신의 요점을 안다, 고마워! – Janie
괜찮지 만 데이터 집합을 매핑하면 그 결과가 Ints라고하는 데이터 집합입니다. 이제 Ints의 데이터 세트가 있고 열 이름이 "value"이지만 어쩌면 당신은 "myInt"라고 부르기를 원할 것입니다. –