Sobes.tech
Middle

Čo je to broadcast join v Spark a na čo slúži?

sobes.tech AI

Odpoveď od AI

Broadcast join v Apache Spark je optimalizácia operácie spojenia (join), pri ktorej sa jedna z tabuliek (zvyčajne menšia) prenáša (broadcastuje) na všetky uzly klastru, kde sa vykonáva spojenie s veľkou tabuľkou.

Na čo je to užitočné?

  • Pri bežnom shuffle join-e sú obe tabuľky rozdelené a odoslané cez sieť, čo môže byť nákladné pri veľkých dátach.
  • Ak je jedna z tabuliek dostatočne malá, môže byť 'broadcastovaná' na všetky pracovné uzly, aby sa zabránilo shuffle veľkej tabuľky.
  • To výrazne zrýchľuje vykonávanie join-u, znižuje sieťový prenos a záťaž klastru.

Príklad použitia:

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

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

Tu broadcast(smallDF) hovorí Spark-u, aby preniesol smallDF na všetky uzly, čo zlepší výkon pri spojení s largeDF.

Broadcast join je obzvlášť užitočný v scenároch, kde je jedna tabuľka výrazne menšia ako druhá a môže sa zmestiť do pamäte každého uzla.