Broadcasting gebruiken bij Spark-joins
Onthoud dat joins van tabellen in Spark worden opgesplitst over de clusterworkers. Als de data niet lokaal is, zijn er verschillende shuffle-bewerkingen nodig, wat negatieve impact kan hebben op de prestaties. In plaats daarvan gaan we de broadcast-operaties van Spark gebruiken om elke node een kopie van de opgegeven data te geven.
Een paar tips:
- Broadcast de kleinere DataFrame. Hoe groter de DataFrame, hoe meer tijd het kost om deze naar de workernodes over te zetten.
- Bij kleine DataFrames is het soms beter om niet te broadcasten en Spark zelf eventuele optimalisaties te laten bepalen.
- Als je naar het query-uitvoeringsplan kijkt, geeft een broadcastHashJoin aan dat je broadcasting succesvol hebt ingesteld.
De DataFrames flights_df en airports_df zijn voor je beschikbaar.
Deze oefening maakt deel uit van de cursus
Data opschonen met PySpark
Oefeninstructies
- Importeer de methode
broadcast()uitpyspark.sql.functions. - Maak een nieuwe DataFrame
broadcast_dfdoorflights_dfte joinen metairports_df, met gebruik van broadcasting. - Laat het queryplan zien en bekijk de verschillen met het origineel.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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.____()