Adicionando uma coluna de linhas em uma lista de colunas no Spark Dataframe

Eu tenho um quadro de dados Spark com várias colunas. Quero adicionar uma coluna ao quadro de dados que é uma soma de um determinado número de colunas.

Por exemplo, meus dados são assim:

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

Quero uma coluna adicionada, somando as linhas de colunas específicas:

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

Sei que é possível adicionar colunas se você souber as colunas específicas a serem adicionadas:

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

Mas é possível passar uma lista de nomes de colunas e adicioná-los? Com base nesta resposta, que é basicamente o que eu quero, mas ela está usando a API python em vez de scala (Adicionar soma da coluna como nova coluna no quadro de dados PySpark) Acho que algo assim funcionaria:

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

Isso gera que a soma do valor do erro não é um membro do org.apache.spark.sql.DataFrame. Existe uma maneira de somar colunas?

Agradeço antecipadamente por sua ajuda.

questionAnswers(4)

yourAnswerToTheQuestion