在火花中:在groupBy
之后,一切都进入了一个执行者。如果a之后执行repartition(x)
,那么rdd
是否在x执行器中分布,或者只是在x个分区中得到1个带有x rdd块的执行器?
示例:
rdd = rdd_tmp.groupBy.repartition(32).cache()
rdd.count()
如果我使用32个执行程序并运行groupBy operation
,则缓存rdd
。
我能得到:
1个具有32个rdd块的执行器
32位执行者,每人1份
答案 0 :(得分:0)
首先运行rdd_tmp.getNumPartitions()。如果partition小于32,则可以使用repartition(32)将分区增加到32。如果你有32个执行者,每个执行者将在1个分区上工作[将有32个任务,每个执行者将被分配1个任务]。
在你的情况下,1个遗嘱执行人将获得1个区块。
注意:如果rdd_tmp.getNumPartitions()大于32,则重新分区(32)将不起作用。使用coalesce(32)来减少分区。