Usando a transmissão nas uniões do Spark
Lembre-se de que as uniões de tabelas no Spark são divididas entre os trabalhadores do cluster. Se os dados não forem locais, serão necessárias várias operações de embaralhamento, o que pode ter um impacto negativo no desempenho. Em vez disso, usaremos as operações broadcast
do Spark para dar a cada nó uma cópia dos dados especificados.
Algumas dicas:
- Transmita o DataFrame menor. Quanto maior o DataFrame, mais tempo você precisará para transferir para os nós de trabalho.
- Em DataFrames pequenos, pode ser melhor ignorar a transmissão e deixar que o Spark descubra qualquer otimização por conta própria.
- Se você observar o plano de execução da consulta, um broadcastHashJoin indica que você configurou a transmissão com êxito.
Os DataFrames flights_df
e airports_df
estão disponíveis para você.
Este exercício faz parte do curso
Limpeza de dados com o PySpark
Instruções de exercício
- Importe o método
broadcast()
depyspark.sql.functions
. - Crie um novo DataFrame
broadcast_df
juntandoflights_df
comairports_df
, usando a transmissão. - Mostre o plano de consulta e considere as diferenças em relação ao original.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
# Import the broadcast method from pyspark.sql.functions
from ____ import ____
# Join the flights_df and airports_df DataFrames using broadcasting
broadcast_df = flights_df.____(____(airports_df), \
flights_df["Destination Airport"] == airports_df["IATA"] )
# Show the query plan and compare against the original
broadcast_df.____()