обновление столбца данных в Scala - PullRequest
0 голосов
/ 14 февраля 2020

Учитывая кадр данных со столбцами A, B и C, созданный с помощью "val x =", я хочу обновить столбец следующим образом:

x.withColumn("A", when ($"B" === "apple", "fruit").otherwise(col("C")))

Это фактически не меняет x что я считаю ожидаемым. Я думаю, что большинство людей создаст новый фрейм данных:

val y = x.withColumn("A", when ($"B" === "apple", "fruit").otherwise(col("B")))

И у вас есть обновление. Но как вы меняете x при создании нового фрейма данных? Я понимаю, что val x неизменен, но даже когда я объявляю «var x», это то же самое поведение. Это на самом деле не сохраняет изменения.

Является ли это Scala лучшей практикой всегда создавать новый DF?

1 Ответ

1 голос
/ 14 февраля 2020

В соответствии с архитектурой Spark DataFrame построен поверх RDD, которые являются неизменными по своей природе, следовательно, Dataframes также являются неизменными по своей природе. новый фрейм данных вместо обновления существующего фрейма данных.

val y = x.withColumn("A", when ($"B" === "apple", "fruit").otherwise(col("B")))

Вы просто сохраняете результат в val y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...