Это должно быть легко, но ... с использованием Spark 1.6.1 .... У меня есть DataFrame # 1 со столбцами A, B, C . с значением:Создание нового Spark DataFrame с новым значением столбца на основе столбца в первом фрейме данных Java
A B C
1 2 A
2 2 A
3 2 B
4 2 C
Я затем создать новый dataframe с новым столбцом D так:
DataFrame df2 = df1.withColumn("D", df1.col("C"));
до сих пор так хорошо, но я на самом деле хочу, значение в столбце D, чтобы быть условной, а именно:
// pseudo code
if (col C = "A") the col D = "X"
else if (col C = "B") the col D = "Y"
else col D = "Z"
Затем я закрою столбец C и переименуйте D на C. Я пробовал смотреть на функции столбца, но ничего не похоже на счет; Я думал об использовании df1.rdd(). Map() и итерации по строкам, но, кроме того, что на самом деле не удалось заставить его работать, я думал, что вся точка DataFrames должна отойти от абстракции RDD?
К сожалению, я должен сделать это на Java (и, конечно, Spark с Java не является оптимальным !!). Похоже, что я пропускаю очевидное, и я счастлив, что меня показывают, что он идиот, когда ему представлено решение!
Спасибо за это - я действительно смотрел очевидное в лицо: s - то, что я пропускал был статический импорт из SQL функций, то есть: импорт статических org.apache. spark.sql.functions. * – user1128482
@ user1128482 Прошу прощения, я забыл об импорте. Хорошо знать, что вы узнали в конце. –