Ausgabe
Ich habe eine Liste, die die Namen der Spalten enthält. Ich muss diese Spalten verketten und dann erstellen und md5
an den Datenrahmen anhängen.
Beispiel
Ich habe eine Tabelle mit fname
, lname
, address
. Mein resultierender Datenrahmen sollte so aussehen. fname
, lname
, address
undmd5(concat_ws(",",fname, lname))
Meine Liste würde enthalten fname
und lname
.
Code
import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions.Window
val businessCols = List("fname", "lname")
val df = spark.table(s"{databaseName}.${databaseName}")
val new_df = df.
withColumn("concatenated_cols",concat_ws(",",$"businessCols": _*)).
withColumn("md5_hash", md5($"concatenated_cols"))
Fehler
found : org.apache.spark.sql.ColumnName
required: Seq[org.apache.spark.sql.Column]
withColumn("concatenated_cols",concat_ws(",",$"businessCols": _*)).
Lösung
Ich konnte dies beheben, indem ich eine neue Liste erstellte
import org.apache.spark.sql.Column
val cols = businessCols.foldLeft(List[Column]()){(acc,l) => acc ++ List(col(l))}
Beantwortet von – Gaurang Shah
Antwort geprüft von – Marie Seifert (FixError Admin)