Middle
O que é uma junção de transmissão no Spark e para que serve?
sobes.tech IA
Resposta da IA
A junção por broadcast no Apache Spark é uma otimização da operação de junção (join), na qual uma das tabelas (geralmente a menor) é transmitida (broadcasted) para todos os nós do cluster, onde ocorre a junção com a tabela grande.
Para que serve isto?
- Num shuffle join normal, ambas as tabelas são divididas e enviadas pela rede, o que pode ser dispendioso com grandes volumes de dados.
- Se uma das tabelas for suficientemente pequena, pode ser 'broadcasted' para todos os nós de trabalho para evitar o shuffle da tabela grande.
- Isto acelera significativamente a execução do join, reduz o tráfego de rede e a carga no cluster.
Exemplo de uso:
val smallDF = spark.read.parquet("small_table.parquet")
val largeDF = spark.read.parquet("large_table.parquet")
val joined = largeDF.join(broadcast(smallDF), "key")
Aqui, broadcast(smallDF) indica ao Spark que deve transmitir smallDF a todos os nós, o que melhora o desempenho ao unir com largeDF.
O broadcast join é especialmente útil em cenários onde uma tabela é significativamente menor que a outra e pode caber na memória de cada nó.