что происходит, когда раздел в случайном порядке больше 200 (spark.sql.shuffle.partitions 200 (по умолчанию) в кадре данных)

операция агрегации spark sql, которая перемешивает данные, например, spark.sql.shuffle.partitions 200 (по умолчанию). что происходит с производительностью, когда размер раздела в случайном порядке больше 200.

Spark использует другую структуру данных для случайного учета, когда количество разделов превышает 2000. Поэтому, если количество разделов близко к 2000, увеличьте его до более чем 2000.

но мой вопрос в том, каково будет поведение, когда раздел в случайном порядке будет больше 200 (скажем, 300).


person ASHUTOSH Kumar    schedule 06.09.2020    source источник


Ответы (1)


Число 200 было выбрано по умолчанию на основе типичных рабочих нагрузок на относительно большие кластеры с достаточным количеством ресурсов, выделенных для заданий. В противном случае это число следует выбирать на основе двух факторов - количества доступных ядер и размера раздела (рекомендуется, чтобы разделы не превышали 100 МБ). Выбранное количество разделов должно быть кратным количеству доступных ядер, но не должно быть очень большим (обычно это 1-3 x количества ядер). Если количество разделов больше, чем по умолчанию, не следует изменять поведение Spark - это просто увеличит количество задач, которые Spark необходимо будет выполнить).

Вы можете посмотреть этот доклад с Spark + AI Summit 2019 - он охватывает многое подробностей по оптимизации программ Spark, включая выбор количества разделов.

person Alex Ott    schedule 06.09.2020