Sobes.tech
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ó.