2015-04-22 36 views
2

我在Spark中嘗試使用aggregatereduce來生成大型數據集。我注意到這部分縮減是在我的driver中執行的。根據MLLib博客,他們已經設法實施bubbling,即。一旦工人減少了每個工作人員,然後將縮減階段移至工作人員子集,直至最終將其委託給驅動程序。是否強制Spark Aggregate/Reduce「冒泡」?

在我的使用案例中,我有580個分區沒有太多共同的條目,即。每個分區大小爲2GB,但所有分區聚合也是2GB。由於driver正在將分區的縮減委託給driver,所以我得到了一個OOME。我錯過了一個可以做到這一點的API調用,或者是通過應用增量repartitioning來強制執行此行爲的最佳方法嗎?

TNX

+0

你能發表一些代碼嗎?您是否嘗試增加作業配置中的驅動程序內存? –

回答

1

我認爲你正在尋找rdd.treeAggregate適用減速機在多層次的方式,減少了傳遞到驅動程序的最終減少數據量。

它已從mllib移到Spark 1.3.0上的Spark核心。請參閱SPARK-5430