火花:重新分配到底有什么用?

时间:2016-05-03 14:11:28

标签: apache-spark

在火花中:在groupBy之后,一切都进入了一个执行者。如果a之后执行repartition(x),那么rdd是否在x执行器中分布,或者只是在x个分区中得到1个带有x rdd块的执行器?

示例:

rdd = rdd_tmp.groupBy.repartition(32).cache()
rdd.count()

如果我使用32个执行程序并运行groupBy operation,则缓存rdd。 我能得到:

  1. 1个具有32个rdd块的执行器

  2. 32位执行者,每人1份

1 个答案:

答案 0 :(得分:0)

首先运行rdd_tmp.getNumPartitions()。如果partition小于32,则可以使用repartition(32)将分区增加到32。如果你有32个执行者,每个执行者将在1个分区上工作[将有32个任务,每个执行者将被分配1个任务]。

在你的情况下,1个遗嘱执行人将获得1个区块。

注意:如果rdd_tmp.getNumPartitions()大于32,则重新分区(32)将不起作用。使用coalesce(32)来减少分区。