Broadcast Join
O "Broadcast Join", também conhecido como "Map-side Join", é uma técnica de otimização adotada pelo Apache Spark para eficientizar operações de join entre dois conjuntos de dados, seja em DataFrames ou RDDs. Este método é particularmente útil quando um dos conjuntos de dados é suficientemente pequeno para ser difundido por todos os nós de um cluster.
Quando executamos operações de join em sistemas distribuídos, um dos desafios é a necessidade de redistribuir, ou "shuffle", os dados entre diferentes nós. O objetivo do Broadcast Join é minimizar ou, idealmente, eliminar essa redistribuição.
Quando executamos operações de join em sistemas distribuídos, um dos desafios é a necessidade de redistribuir, ou "shuffle", os dados entre diferentes nós. O objetivo do Broadcast Join é minimizar ou, idealmente, eliminar essa redistribuição.
Funcionamento do Broadcast Join:
- Identificação do DataFrame Pequeno: Esse método é mais eficaz quando um dos DataFrames, que denominamos de "DataFrame de transmissão" ou "tabela menor", tem um tamanho manejável para ser alocado na memória de cada executor.
- Transmissão: Esse DataFrame menor é serializado e então enviado para todos os nós do cluster. Isso assegura que cada nó tenha uma cópia desse DataFrame armazenada em sua memória.
- Join Local: Com o DataFrame menor já distribuído por todos os nós, a operação de join com o DataFrame maior acontece localmente em cada nó, eliminando a necessidade de redistribuição de dados entre os nós.
- Identificação do DataFrame Pequeno: Esse método é mais eficaz quando um dos DataFrames, que denominamos de "DataFrame de transmissão" ou "tabela menor", tem um tamanho manejável para ser alocado na memória de cada executor.
- Transmissão: Esse DataFrame menor é serializado e então enviado para todos os nós do cluster. Isso assegura que cada nó tenha uma cópia desse DataFrame armazenada em sua memória.
- Join Local: Com o DataFrame menor já distribuído por todos os nós, a operação de join com o DataFrame maior acontece localmente em cada nó, eliminando a necessidade de redistribuição de dados entre os nós.
Vantagens do Broadcast Join:
- Redução no Shuffle: Ao minimizar a necessidade de redistribuição de dados entre nós, o Broadcast Join pode agilizar significativamente operações de join, otimizando a performance.
- Simplicidade: Em diversos cenários, o próprio Spark pode detectar automaticamente o tamanho do DataFrame e decidir por usar o Broadcast Join.
- Redução no Shuffle: Ao minimizar a necessidade de redistribuição de dados entre nós, o Broadcast Join pode agilizar significativamente operações de join, otimizando a performance.
- Simplicidade: Em diversos cenários, o próprio Spark pode detectar automaticamente o tamanho do DataFrame e decidir por usar o Broadcast Join.