Как можно управлять shuffle в Spark (партиционирование, broadcast join и т.д.)?

Сокращайте shuffle там, где он не нужен, и управляйте размером его партиций. Основные приёмы — фильтрация, предварительная агрегация, broadcast и правильный ключ.

Короткий ответ

Что ответить на собеседовании

Сокращайте shuffle там, где он не нужен, и управляйте размером его партиций. Основные приёмы — фильтрация, предварительная агрегация, broadcast и правильный ключ.

Подробный разбор

Ответ с пояснениями

Сокращайте shuffle там, где он не нужен, и управляйте размером его партиций. Основные приёмы — фильтрация, предварительная агрегация, broadcast и правильный ключ.

Посмотрите план и метрики обмена, прежде чем менять настройки. repartition сам создаёт shuffle, поэтому его добавление оправдано только последующими выгодами. Слишком крупные партиции ведут к spill, слишком мелкие — к накладным расходам.

AQE может корректировать план и размер партиций, но не исправляет любую неудачную модель данных. При горячих ключах нужен отдельный разбор skew.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее