Что такое broadcast join в Spark и зачем он нужен?

Broadcast join в Apache Spark — это оптимизация операции соединения (join), при которой одна из таблиц (обычно меньшая) передаётся (транслируется) на все узлы кластера, где выполняется соединение с большой таблицей.

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

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

Broadcast join в Apache Spark — это оптимизация операции соединения (join), при которой одна из таблиц (обычно меньшая) передаётся (транслируется) на все узлы кластера, где выполняется соединение с большой таблицей.

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

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

Broadcast join в Apache Spark — это оптимизация операции соединения (join), при которой одна из таблиц (обычно меньшая) передаётся (транслируется) на все узлы кластера, где выполняется соединение с большой таблицей.

Зачем это нужно:

  • При обычном shuffle join обе таблицы разбиваются и пересылаются по сети, что может быть дорогостоящим при больших данных.
  • Если одна из таблиц достаточно мала, её можно «распространить» на все рабочие узлы, чтобы избежать shuffle большой таблицы.
  • Это значительно ускоряет выполнение join, снижает сетевой трафик и нагрузку на кластер.

Пример:

val smallDF = spark.read.parquet("small_table.parquet")
val largeDF = spark.read.parquet("large_table.parquet")

val joined = largeDF.join(broadcast(smallDF), "key")

Здесь broadcast(smallDF) указывает Spark транслировать smallDF на все узлы, что улучшит производительность при соединении с largeDF.

Broadcast join особенно полезен в сценариях, где одна таблица значительно меньше другой и может поместиться в память каждого узла.

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

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

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

Подробнее