Questo dovrebbe essere facile ma .... utilizzando Spark 1.6.1 .... Ho DataFrame # 1 con le colonne A, B, C . con valori:Creazione di un nuovo Spark DataFrame con un nuovo valore di colonna basato sulla colonna nel primo dataframe Java
A B C
1 2 A
2 2 A
3 2 B
4 2 C
ho quindi creare un nuovo dataframe con una nuova colonna D così:
DataFrame df2 = df1.withColumn("D", df1.col("C"));
fin qui tutto bene, ma io in realtà voglio il valore nella colonna D di essere cioè condizionale:
// pseudo code
if (col C = "A") the col D = "X"
else if (col C = "B") the col D = "Y"
else col D = "Z"
Lascerò quindi la colonna C e rinominerò D in C. Ho provato a esaminare le funzioni Column ma nulla sembra adattarsi alla fattura; Ho pensato di usare df1.rdd(). Map() e scorrere le righe, ma a parte il fatto che non riuscivo davvero a farlo funzionare, pensavo che l'intero punto di DataFrames fosse quello di allontanarsi dall'astrazione RDD?
Purtroppo devo farlo in Java (e ovviamente Spark con Java non è ottimale !!). Sembra che mi manchi l'ovvio e sono felice di mostrarsi un idiota quando viene presentato con la soluzione!
Grazie per questo - ero davvero fissando l'ovvio in faccia: s - quello che mi mancava era l'importazione statica delle funzioni SQL cioè: import org.apache statica. spark.sql.functions. * – user1128482
@ user1128482 Mi dispiace, ho dimenticato l'importazione. Buono a sapersi che l'hai scoperto alla fine. –