Я не совсем уверен, понял ли я ваш вопрос, однако думаю, что могу дать вам лучший пример, который я нашел в Spark: Руководство по исчерпывающим инструкциям , чтобы понять количество разделов и соответствующих задач на каждом этапе
Для этого задания ниже приводится объяснение
Это задание разбивается на следующие этапы и задачи:
- Этап 1 с 8 задачами
- Этап 2 с 8 задачами
- Этап 3 с 6 задачами
- Этап 4 с 5 заданиями
- Этап 5 с 200 заданиями
Этап 6 с 1 заданием
Первые два этапа соответствуютк диапазону, который вы выполняете для создания ваших фреймов данных. По по умолчанию , когда вы создаете DataFrame с диапазоном , он имеет восемь разделов .
Следующим шагом являетсяпереразметка. Это изменяет количество разделов путем перетасовки данных. Эти кадры данных перемешиваются в шесть разделов и пять разделов, что соответствует количеству задач на этапах 3 и 4.
Этапы 3 и 4 выполняются на каждом из этих кадров данных и в концеЭтап представляет собой соединение (случайное перемешивание). Внезапно у нас есть 200 задач. Это из-за конфигурации Spark SQL. Значение по умолчанию spark.sql.shuffle.partitions
равно 200 , что означает, что, когда во время выполнения выполняется случайное воспроизведение, по умолчанию выводятся 200 разделов случайного воспроизведения. Вы можете изменить это значение, и количество выходных разделов изменится.
Конечный результат объединяет эти разделы по отдельности, объединяет их в один раздел перед окончательной отправкой окончательного результата вдрайвер.
Еще одна заметка по spark.sql.shuffle.partitions
из spark docs
spark.sql.shuffle.partitions 200 Configures the number of partitions to use when shuffling data **for joins or aggregations**.