Ответ 1
Из ответа здесь, spark.sql.shuffle.partitions
настраивает количество разделов, которые используются при перетасовке данных для объединений или агрегаций.
spark.default.parallelism
- это количество разделов по умолчанию в RDD
по умолчанию, возвращаемое преобразованиями, такими как join
, reduceByKey
и parallelize
, если пользователь не задал явно. Обратите внимание, что spark.default.parallelism
работает только для raw RDD
и игнорируется при работе с фреймами данных.
Если задание, которое вы выполняете, не является объединением или агрегацией, и вы работаете с файловыми кадрами, тогда их установка не будет иметь никакого эффекта. Однако вы можете сами установить количество разделов, вызвав df.repartition(numOfPartitions)
(не забудьте назначить его новому val
) в вашем коде.
Чтобы изменить настройки в коде, вы можете просто:
sqlContext.setConf("spark.sql.shuffle.partitions", "300")
sqlContext.setConf("spark.default.parallelism", "300")
В качестве альтернативы вы можете внести изменения при отправке задания в кластер с помощью spark-submit
:
./bin/spark-submit --conf spark.sql.shuffle.partitions=300 --conf spark.default.parallelism=300