Число сокращает задачи Spark

Какова формула, которую Spark использует для вычисления количества задач сокращения?

Я запускаю несколько запросов spark-sql, а число задач сокращения всегда равно 200. Количество задач карты для этих запросов - 154. Я на Spark 1.4.1.

Связано это с spark.shuffle.sort.bypassMergeThreshold, по умолчанию 200

Ответ 1

Это spark.sql.shuffle.partitions, что вы после. В соответствии с Руководством по программированию Spark SQL:

spark.sql.shuffle.partitions    200     Configures the number of partitions to use when shuffling data for joins or aggregations.

Другим параметром, связанным с этим, является spark.default.parallelism, который определяет "по умолчанию количество разделов в RDD, возвращаемых преобразованиями, такими как join, reduceByKey, и распараллеливание, если не задано пользователем", однако это, похоже, игнорируется Spark SQL и применимы только при работе с обычными RDD.

Ответ 2

Да, @svgd, это правильный параметр. Вот как вы reset в Scala:

// Set number of shuffle partitions to 3
sqlContext.setConf("spark.sql.shuffle.partitions", "3")
// Verify the setting 
sqlContext.getConf("spark.sql.shuffle.partitions")

Ответ 3

В настоящее время в Spark 2 + для установки этого параметра необходимо выполнить следующие действия:

spark.conf.set("spark.sql.shuffle.partitions", 16)