Când două tabele mari sunt unite printr-un JOIN, Spark este forțat să re-distribuie datele între toate nodurile clusterului pe rețea (operațiunea de Shuffle). Prin utilizarea Broadcast Joins, tabelul mic este copiat integral în memoria fiecărui executor, eliminând complet transferul de date pe rețea!
Tuning și Performanță în Spark SQL: Partitioning, Bucketing, Broadcast Joins și Evitarea Shuffling-ului Costisitor în Apache Spark & PySpark
Performanță & Tuning
Spark 3.5
Ghid de optimizare a performanței în Spark: de ce operațiunea de Shuffle este cel mai mare inamic al vitezei, utilizarea broadcast(small_df) pentru uniri rapide în memorie, Adaptive Query Execution (AQE) și particionare.
Sintaxă
from pyspark.sql.functions import broadcast; large_df.join(broadcast(small_df), 'key')