Ответ вслух Senior Spark обновлено

Стратегии джойнов в Spark

Вопрос

Расскажите, какие стратегии джойна есть в Spark, как он выбирает между ними и как вы можете на это повлиять.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Основные стратегии три. Broadcast hash join: маленькая таблица собирается и рассылается на все executors, большая читается без shuffle, это самое быстрое, пока маленькая сторона действительно маленькая.

Что должно прозвучать в ответе

  • Broadcast hash join: маленькая сторона на каждый executor, без shuffle большой

  • Sort-merge join: shuffle и сортировка обеих сторон, для двух больших таблиц

  • Shuffle hash join как промежуточный вариант

  • Выбор по статистике и порогу autoBroadcastJoinThreshold, AQE во время выполнения

  • Хинты broadcast, merge, бакетинг таблиц по ключу

  • Подготовка: фильтры и отбор колонок до джойна, борьба с перекосом

Что могут спросить следом

  • Почему broadcast может уронить executors?
  • Что даёт бакетинг для джойнов?

Разбор

Образцовый ответ: «Основные стратегии три. Broadcast hash join: маленькая таблица собирается и рассылается на все executors, большая читается без shuffle, это самое быстрое, пока маленькая сторона действительно маленькая. Sort-merge join: обе стороны перемешиваются по ключу и сортируются, это стандарт для двух больших таблиц. Shuffle hash join строит хеш-таблицу по меньшей стороне в каждой партиции. Spark выбирает по оценке размера: если сторона меньше autoBroadcastJoinThreshold, по умолчанию 10 мегабайт, берёт broadcast; AQE может переключиться на broadcast уже после того, как узнал реальный размер. Повлиять можно хинтами, порогом, а для повторяющихся джойнов больших таблиц бакетингом по ключу, тогда shuffle не нужен. И главное: до джойна отфильтровать строки и отобрать колонки, а перекошенные ключи обработать отдельно. Broadcast слишком большой таблицы опасен: она не влезет в память driver или executors».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.