在火花如何可以創建從行的元組作爲在火花如何可以從行創建的元組爲(Col1中,Col2中,COL3,(COL4 + COL5 + COL6))
(Col1 , Col2,Col3 ,(Col4+Col5+Col6))
我有400多個動態生成的列名稱。我不想在DB上進行這種聚合,所以選擇col1,col2,col3,(col4 + col5 + col6)不是解決方案。我使用卡桑德拉的數據存儲
在火花如何可以創建從行的元組作爲在火花如何可以從行創建的元組爲(Col1中,Col2中,COL3,(COL4 + COL5 + COL6))
(Col1 , Col2,Col3 ,(Col4+Col5+Col6))
我有400多個動態生成的列名稱。我不想在DB上進行這種聚合,所以選擇col1,col2,col3,(col4 + col5 + col6)不是解決方案。我使用卡桑德拉的數據存儲
在一般情況下,我認爲你有正確的觀念,所以我這裏的建議只是語法糖:
df
.map{row => (row(0), row(1), row(2), (3 until row.length).map(row.getLong(_)).sum)}
使用下面的代碼解決了這個問題。但是我還在原地尋找更短的答案可能是語法糖..
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()