Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在spark中:重新分区到底起什么作用?_Apache Spark - Fatal编程技术网

Apache 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

在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.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)减少分区