在Spark中如何从行创建一个元组(Col1,Col2,Col3,(Col4 + Col5 + Col6))

时间:2016-11-19 02:48:40

标签: apache-spark

在Spark中如何从行创建元组

(Col1 , Col2,Col3 ,(Col4+Col5+Col6))

我有400多个动态生成的列名。我不想在DB上进行这种聚合,所以选择col1,col2,col3,(col4 + col5 + col6)不是解决方案。我正在使用cassandra进行数据存储

2 个答案:

答案 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()