Spark筆記-treeReduce、reduce、reduceByKey


參考資料:

http://stackoverflow.com/questions/32281417/understadning-treereduce-in-spark

http://stackoverflow.com/questions/34078430/treereduce-vs-reducebykey-in-spark

 

reduceByKey和treeReduce之間有一個根本區別,reduceByKey它只對key-value pair RDDs可用,而treeReduce可以對任何RDD使用,相當於是reduce操作的泛化。 reduceByKey用於實現treeReduce,但它們在任何其他意義上都不相關。

reduceByKey對每個鍵執行reduce,結果生成RDD; 它不是"action"操作,而是返回ShuffleRDD,是"transformation"。 這等效於groupByKey后面跟着一個map,它執行key-wise reduction(為什么使用groupByKey是低效的)。

另一方面,treeAggregate是reduce函數的泛化,靈感來自AllReduce。 這在Spark中是一個"action",將結果返回到master節點。在執行本地的reduce操作之后,普通的reduce在master上執行剩余的計算,這樣的計算量可能是非常繁重的(特別是在機器學習中,reduce函數結果是大的向量或矩陣時)。 相反,treeReduce使用reduceByKey並行的執行reduction(這是通過在運行時創建key-value pair RDD,其中鍵由樹的深度確定)

 

treeReduce & reduce return some result to driver

treeReduce does more work on the executors

while reduce bring everything back to the driver.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM