Sobes.tech
Middle

Co je to broadcast join v Spark a k čemu slouží?

sobes.tech AI

Odpověď od AI

Broadcast join v Apache Spark je optimalizace operace spojení (join), při které je jedna z tabulek (obvykle menší) přenášena (broadcastována) na všechny uzly clusteru, kde se provádí spojení s velkou tabulkou.

K čemu je to užitečné?

  • U běžného shuffle join jsou obě tabulky rozděleny a přenášeny přes síť, což může být nákladné u velkých dat.
  • Pokud je jedna z tabulek dostatečně malá, může být 'broadcastována' na všechny pracovní uzly, aby se zabránilo shuffle velké tabulky.
  • To výrazně urychlí provádění joinu, sníží síťový provoz a zatížení clusteru.

Příklad použití:

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

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

Zde broadcast(smallDF) říká Spark, aby přenesl smallDF na všechny uzly, což zlepší výkon při spojování s largeDF.

Broadcast join je obzvlášť užitečný v scénářích, kde je jedna tabulka výrazně menší než druhá a může se vejít do paměti každého uzlu.