1
我在Pyspark上寫了一個算法,它使用aggregateByKey
來得到一個大列表(key, python_obj)
(本身是一個不是很小的Python類)。Spark累加器可以比aggregateByKey快嗎?
從理論上說,我可以通過製作一個巨大的字典來實現與累加器相同的對吧?
這是值得的努力或累加器意味着不同的使用情況?
我在Pyspark上寫了一個算法,它使用aggregateByKey
來得到一個大列表(key, python_obj)
(本身是一個不是很小的Python類)。Spark累加器可以比aggregateByKey快嗎?
從理論上說,我可以通過製作一個巨大的字典來實現與累加器相同的對吧?
這是值得的努力或累加器意味着不同的使用情況?
可能會出現邊界情況,其中累加器可能更快,但通常情況下答案是否定的。簡化的東西實現aggregateByKey
使用蓄電池一點點相當於調用上的每個分區部分結果collect
和司機本地機器上處理的最終輸出:
rdd.mapPartitions(_.fold(zero)(combineOp)).collect.reduce(mergeOp)
即使你忽略了蓄電池的可靠性問題,並略顯尷尬的API這只是使驅動器成爲瓶頸,並且在一般情況下可能不可行。