Middle
Šta je broadcast join u Spark-u i čemu služi?
sobes.tech АИ
Одговор од АИ
Broadcast join u Apache Spark-u je optimizacija operacije spajanja (join), pri čemu se jedna od tabela (obično manja) prenosi (broadcast) na sve čvorove klastera, gde se vrši spajanje sa velikom tabelom.
Čemu to služi?
- Kod običnog shuffle join-a, obe tabele se dele i šalju putem mreže, što može biti skupo kod velikih podataka.
- Ako je jedna od tabela dovoljno mala, može se 'broadcast-ovati' na sve radne čvorove, čime se izbegava shuffle velike tabele.
- Ovo značajno ubrzava izvršenje join-a, smanjuje mrežni saobraćaj i opterećenje klastera.
Primer upotrebe:
val smallDF = spark.read.parquet("small_table.parquet")
val largeDF = spark.read.parquet("large_table.parquet")
val joined = largeDF.join(broadcast(smallDF), "key")
Ovde broadcast(smallDF) ukazuje Spark-u da prenese smallDF na sve čvorove, čime se poboljšava performanse prilikom spajanja sa largeDF.
Broadcast join je posebno koristan u scenarijima gde je jedna tabela znatno manja od druge i može stati u memoriju svakog čvora.