我有以下DataFrame:
January | February | March
-----------------------------
10 | 10 | 10
20 | 20 | 20
50 | 50 | 50
我正在尝试为此添加一列,这是每一行的值的总和。
January | February | March | TOTAL
----------------------------------
10 | 10 | 10 | 30
20 | 20 | 20 | 60
50 | 50 | 50 | 150
据我所知,所有内置的聚合函数似乎都是用于计算单列中的值。如何在每行的基础上跨列使用值(使用Scala)?
我已经到了
val newDf: DataFrame = df.select(colsToSum.map(col):_*).foreach ...
最佳答案
您与此非常接近:
val newDf: DataFrame = df.select(colsToSum.map(col):_*).foreach ...
相反,请尝试以下操作:
val newDf = df.select(colsToSum.map(col).reduce((c1, c2) => c1 + c2) as "sum")
我认为这是最好的答案,因为它与使用硬编码的SQL查询的答案一样快,并且与使用
UDF
的答案一样方便。这是两全其美的做法-我什至没有添加完整的代码行!关于scala - Spark-行值之和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36360540/