在Spark中如何从行创建元组
(Col1 , Col2,Col3 ,(Col4+Col5+Col6))
我有400多个动态生成的列名。我不想在DB上进行这种聚合,所以选择col1,col2,col3,(col4 + col5 + col6)不是解决方案。我正在使用cassandra进行数据存储
答案 0 :(得分:3)
总的来说,我认为你有正确的想法,所以我的建议只是语法糖:
df
.map{row => (row(0), row(1), row(2), (3 until row.length).map(row.getLong(_)).sum)}
答案 1 :(得分:0)
使用下面的代码解决它..但是我仍然在寻找更短的答案可能与合成糖..
df.map(x => {
var sum :Long = 0
for (i <- 3 until x.length)
sum = sum + x(i).asInstanceOf[Long]
(x(0) ,x(1) ,x(2) ,sum)
}).collect()