2017-01-01 23 views
-1

例如,如果我有付款數據[DataFrame中的30到40列]並且數據量大約爲400萬[雖然不是很大]。但是需要使用groupBy和DF對agg進行大量[25到30]不同的計算。Spark SQL - 按字段分組的更好方法

由於我們將使用相同的DF進行不同的計算,因此我們使用的是cache()

例DF:

country transactions 
IN  1001 
IN  1002 
UK  1003 
UK  1004 

目前我在做什麼是

df.groupBy("country").agg(countDisinct(transactions)) as txncnt) 

我的問題是什麼其他的方式,我可以達到同樣的[可在星火SQL分組數據的更好的辦法DataFrame],我們可以做些什麼,如reduceByKey or AggregateByKey [RDD operations]?

回答

0

所以,如果你使用groupBy並對數據進行操作,你可能應該直接使用reduceByKey。每個執行者然後將發送他的計算結果。

嘗試創建一個DF與一組計算,您可以使用您的所有20個計算和緩存它...

+0

如果我有GROUPBY在DF多個領域? – Shankar

+0

然後,我會probally創建多個數據幀.. –