Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Importeer de methode broadcast() uit pyspark.sql.functions.
  • Maak een nieuwe DataFrame broadcast_df door flights_df te joinen met airports_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.____()
Code bewerken en uitvoeren