Erstellen Sie eine neue Funke DataFrame mit neuen Spalte Wert basiert auf der Spalte, in der ersten dataframe Java

Diese sollte einfach sein, aber....mit Spark 1.6.1....
Ich habe DataFrame #1 mit den Spalten A, B, C. Mit den Werten:

A  B  C
1  2  A
2  2  A
3  2  B
4  2  C

Ich dann erstellen Sie ein neues dataframe mit einer neuen Spalte D also:

DataFrame df2 = df1.withColumn("D", df1.col("C"));

so weit so gut, aber eigentlich möchte ich den Wert in Spalte D werden bedingte ie:

//pseudo code
if (col C = "A") the col D = "X"
else if (col C = "B") the col D = "Y"
else col D = "Z"

Werde ich dann drop column C und umbenennen D zu C. ich habe versucht, suchen in der Spalte Funktionen, aber nichts scheint zu passen die Rechnung; ich dachte, der Verwendung von df1.rdd().map() und die Iteration über die Zeilen, aber abgesehen von der nicht wirklich zu verwalten, um es zu arbeiten, ich dachte, dass der ganze Sinn des DataFrames war eine Abkehr von der RDD Abstraktion?

Leider habe ich dies in Java (und natürlich Spark mit Java ist nicht optimal!!!!). Wie es scheint, fehlt mir die offensichtliche und bin glücklich, es zu sein gezeigt zu sein ein idiot, wenn vorgestellt mit der Lösung!

InformationsquelleAutor user1128482 | 2016-05-07
Schreibe einen Kommentar