Apache spark 在spark中:重新分区到底起什么作用?
在spark中:在一个Apache spark 在spark中:重新分区到底起什么作用?,apache-spark,Apache Spark,在spark中:在一个groupBy之后,所有内容都交给一个执行者。如果在它之后执行重新分区(x),那么rdd是分布在x个执行器中,还是只在x个分区中分块,得到1个执行器和x个rdd块 例如: rdd = rdd_tmp.groupBy.repartition(32).cache() rdd.count() 如果我使用32个执行器并运行groupBy操作,并缓存rdd。 我是否得到: 1个带32个rdd块的执行器 32名执行人,每人1个rdd ?第一次运行rdd_tmp.getNumParti
groupBy
之后,所有内容都交给一个执行者。如果在它之后执行重新分区(x)
,那么rdd
是分布在x个执行器中,还是只在x个分区中分块,得到1个执行器和x个rdd块
例如:
rdd = rdd_tmp.groupBy.repartition(32).cache()
rdd.count()
如果我使用32个执行器并运行groupBy操作
,并缓存rdd
。
我是否得到:
?第一次运行rdd_tmp.getNumPartitions()。若分区小于32,则可以使用重新分区(32)将分区增加到32。如果您有32个执行器,每个执行器将在1个分区上工作[将有32个任务,每个执行器将分配1个任务] 在您的情况下,1个执行者将获得1个区块
注意:如果rdd_tmp.getNumPartitions()大于32,则重新分区(32)将不起作用。使用coalesce(32)减少分区。首先运行rdd_tmp.getNumPartitions()。若分区小于32,则可以使用重新分区(32)将分区增加到32。如果您有32个执行器,每个执行器将在1个分区上工作[将有32个任务,每个执行器将分配1个任务] 在您的情况下,1个执行者将获得1个区块 注意:如果rdd_tmp.getNumPartitions()大于32,则重新分区(32)将不起作用。使用coalesce(32)减少分区