为什么groupBy 200之后的分区数量?为什么这200不是其他数字?

Jac*_*ski 7 apache-spark

这是Spark 2.2.0-SNAPSHOT.

groupBy在以下示例中,为什么转换后的分区数量为200?

scala> spark.range(5).groupByKey(_ % 5).count.rdd.getNumPartitions
res0: Int = 200
Run Code Online (Sandbox Code Playgroud)

有什么特别之处200?为什么不是其他一些数字1024呢?

我被告知为什么groupByKey操作总是有200个任务?具体问一下groupByKey,但问题是关于选择200默认背后的"神秘" ,而不是为什么默认情况下有200个分区.

Ass*_*son 11

这是由spark.sql.shuffle.partitions设置的

通常,无论何时执行spark sql聚合或连接都会对数据进行混洗,这就是生成的分区数.

它对你的整个动作是不变的(即,不可能为一次转换而改变它,然后再转换为另一次转换).

有关更多信息,请参阅http://spark.apache.org/docs/latest/sql-programming-guide.html#other-configuration-options

  • 为什么是200? (2认同)
  • `spark.shuffle.sort.bypassMergeThreshold`也是200.我认为这不是巧合. (2认同)