Случайные разделы не зависят от размера данных.
Данные распаковываются и затем перетасовываются в зависимости от количества случайных разделов (с использованием хеш-разделителя, разделителя диапазона и т. Д.).
Как правило, перетасовываются разделы
1. Увеличить параллелизм, доступный на ступени редуктора.
2. Уменьшить объем данных, обрабатываемых разделами в случайном порядке (если мы наблюдаем разливы или это происходит, то этап уменьшения занимает много памяти)
Я прочитал из нескольких источников, что каждый раздел должен иметь размер около 128 МБ.
Это применимо только к этапам картографирования. Размеры разделения в маппере вычисляются на основе размера сжатых данных. Вы можете настроить размер разделителей мапперов используя spark.sql.files.maxPartitionBytes
А разделы в случайном порядке (сконфигурированные с использованием spark.sql.shuffle.partitions
, по умолчанию 200) относятся к ступеням редуктора.
Короче говоря, сжатие вступает в игру только на этапах картографирования, а не на этапах редуктора.