【发布时间】:2016-01-17 10:39:28
【问题描述】:
我正在运行一个迭代算法,其中在每次迭代期间,每个值列表都分配有一组键(1 到 N)。随着时间的推移,文件在键上的分布变得倾斜。我注意到在几次迭代之后,合并阶段,我的 RDD 的最后几个分区上的事情似乎开始运行得很慢。
我的改造如下:
dataRDD_of_20000_partitions.aggregateByKey(zeroOp)(seqOp, mergeOp)
.mapValues(...)
.coalesce(1000, true)
.collect()
这里,aggregatebykey 聚合了我之前分配的键(1 到 N)。我可以合并分区,因为我知道我需要的分区数量,并将 coalesce shuffle 设置为 true 以平衡分区。
谁能指出这些转换可能导致 RDD 的最后几个分区处理缓慢的一些原因?我想知道这是否与数据偏斜有关。
【问题讨论】:
标签: scala apache-spark distributed-computing rdd