[FIXED] Spark Scala – wie man den md5 mehrerer Spalten basierend auf der Liste der Spalten berechnet

Ausgabe

Ich habe eine Liste, die die Namen der Spalten enthält. Ich muss diese Spalten verketten und dann erstellen und md5an den Datenrahmen anhängen.

Beispiel

Ich habe eine Tabelle mit fname, lname, address. Mein resultierender Datenrahmen sollte so aussehen. fname, lname, addressundmd5(concat_ws(",",fname, lname))

Meine Liste würde enthalten fnameund 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"))

Geben Sie hier die Bildbeschreibung ein

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)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like