Zeilensummenspalte über eine Spaltenliste in Spark Dataframe hinzufügen

Ich habe einen Spark-Datenrahmen mit mehreren Spalten. Ich möchte dem Datenrahmen eine Spalte hinzufügen, die eine Summe einer bestimmten Anzahl von Spalten ist.

Zum Beispiel sehen meine Daten so aus:

ID var1 var2 var3 var4 var5
a   5     7    9    12   13
b   6     4    3    20   17
c   4     9    4    6    9
d   1     2    6    8    1

Ich möchte, dass eine Spalte hinzugefügt wird, in der die Zeilen für bestimmte Spalten summiert werden:

ID var1 var2 var3 var4 var5   sums
a   5     7    9    12   13    46
b   6     4    3    20   17    50
c   4     9    4    6    9     32
d   1     2    6    8    10    27

Ich weiß, dass es möglich ist, Spalten zusammenzufügen, wenn Sie die spezifischen Spalten kennen, die hinzugefügt werden sollen:

val newdf = df.withColumn("sumofcolumns", df("var1") + df("var2"))

Aber ist es möglich, eine Liste von Spaltennamen zu übergeben und diese zusammenzufügen? Basierend auf dieser Antwort, die im Grunde genommen das ist, was ich will, aber es verwendet die Python-API anstelle von Scala Spaltensumme als neue Spalte in PySpark-Datenrahmen hinzufügen) Ich denke so etwas würde funktionieren:

//Select columns to sum
val columnstosum = ("var1", "var2","var3","var4","var5")

// Create new column called sumofcolumns which is sum of all columns listed in columnstosum
val newdf = df.withColumn("sumofcolumns", df.select(columstosum.head, columnstosum.tail: _*).sum)

Dies löst aus, dass der Fehlerwert sum kein Mitglied von org.apache.spark.sql.DataFrame ist. Gibt es eine Möglichkeit, über Spalten zu summieren?

Vielen Dank im Voraus für Ihre Hilfe

Antworten auf die Frage(8)

Ihre Antwort auf die Frage