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.