Ajout d'une colonne de rowsums à travers une liste de colonnes dans Spark Dataframe

J'ai une Étincelle dataframe avec plusieurs colonnes. Je veux ajouter une colonne sur le dataframe qui est une somme d'un certain nombre de colonnes.

Par exemple, mes données ressemble à ceci:

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

Je veux une colonne ajoutée en additionnant les lignes des colonnes spécifiques:

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

Je sais qu'il est possible d'ajouter des colonnes si vous connaissez les colonnes à ajouter:

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

Mais est-il possible de passer d'une liste de noms de colonnes et les additionner? En fonction de cette réponse, qui est essentiellement ce que je veux mais c'est à l'aide de l'API python à la place de la scala (Ajouter une colonne somme comme nouvelle colonne dans PySpark dataframe) je pense que quelque chose de ce genre:

//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)

Ce lève la valeur de l'erreur de somme n'est pas membre de l'organisation.apache.spark.sql.DataFrame. Est-il un moyen de somme à travers les colonnes?

Merci d'avance pour votre aide.

InformationsquelleAutor Sarah | 2016-06-03