Сокращайте shuffle там, где он не нужен, и управляйте размером его партиций. Основные приёмы — фильтрация, предварительная агрегация, broadcast и правильный ключ.
Как можно управлять shuffle в Spark (партиционирование, broadcast join и т.д.)?
Сокращайте shuffle там, где он не нужен, и управляйте размером его партиций. Основные приёмы — фильтрация, предварительная агрегация, broadcast и правильный ключ.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сокращайте shuffle там, где он не нужен, и управляйте размером его партиций. Основные приёмы — фильтрация, предварительная агрегация, broadcast и правильный ключ.
Посмотрите план и метрики обмена, прежде чем менять настройки. repartition сам создаёт shuffle, поэтому его добавление оправдано только последующими выгодами. Слишком крупные партиции ведут к spill, слишком мелкие — к накладным расходам.
AQE может корректировать план и размер партиций, но не исправляет любую неудачную модель данных. При горячих ключах нужен отдельный разбор skew.