Apache spark spark中的默认洗牌分区值

Apache spark spark中的默认洗牌分区值,apache-spark,Apache Spark,spark中的默认洗牌分区值为200个分区。我想澄清一下,这个数字是每个输入分区的吗?或者在所有输入分区中,输出分区的数量将是200 我看了一些资料,没有找到我想要的答案。我不确定我是否理解你的问题,但是我想我可以给你一个我在中找到的最好的例子,以了解每个阶段的分区数量和相应的任务 对于此作业,以下是解释输出 此作业分为以下阶段和任务: 第1阶段有8项任务 第2阶段,共8项任务 第3阶段,共6项任务 第4阶段,共5项任务 第五阶段,200项任务 第6阶段,1个任务 前两个阶段对应于为创建

spark中的默认洗牌分区值为200个分区。我想澄清一下,这个数字是每个输入分区的吗?或者在所有输入分区中,输出分区的数量将是200


我看了一些资料,没有找到我想要的答案。

我不确定我是否理解你的问题,但是我想我可以给你一个我在中找到的最好的例子,以了解每个阶段的分区数量和相应的任务

对于此作业,以下是解释输出

此作业分为以下阶段和任务:

  • 第1阶段有8项任务
  • 第2阶段,共8项任务
  • 第3阶段,共6项任务
  • 第4阶段,共5项任务
  • 第五阶段,200项任务
  • 第6阶段,1个任务

    • 前两个阶段对应于为创建数据帧而执行的范围。默认情况下当您创建范围为的数据帧时,它有八个分区

    • 下一步是重新分区。这会通过洗牌数据来更改分区的数量。这些数据帧被洗牌为六个分区和五个分区,对应于阶段3和阶段4中的任务数量

    • 阶段3和阶段4在这些数据帧中的每一个上执行,阶段的末尾表示连接(洗牌)。突然,我们有了200项任务。这是因为Spark SQL配置。
      spark.sql.shuffle.partitions
      默认值为200,这意味着在执行过程中执行洗牌时,它默认输出200个洗牌分区。您可以更改此值,输出分区的数量也将更改

    • 最终结果分别聚合这些分区,将它们全部放到一个分区中,然后最终将最终结果发送给驱动程序

关于spark.sql.shuffle.partitions的另一个注释

spark.sql.shuffle.partitions 200配置在对数据**进行合并或聚合时使用的分区数**。