Spark累加器可以比aggregateByKey快吗?

时间:2016-05-31 11:52:27

标签: apache-spark pyspark

我在Pyspark中编写了一个算法,它使用aggregateByKey来获取(key, python_obj)的大列表(python_obj本身就是一个不太小的Python类。)

理论上我可以通过创建一个庞大的字典来实现与累加器相同的,对吗?

是否值得努力或者是针对不同用例的累加器?

1 个答案:

答案 0 :(得分:2)

可能存在边界情况,累加器可以更快,但一般来说答案是否定的。使用累加器简化一些实现aggregateByKey的事情相当于在每个分区的部分结果上调用collect并在驱动程序机器上本地处理最终输出:

rdd.mapPartitions(_.fold(zero)(combineOp)).collect.reduce(mergeOp)

即使您忽略累​​加器可靠性问题和稍微笨拙的API,这只会使驱动程序机器成为瓶颈,并且在一般情况下可能不可行。