Broadcasting bei Spark-Joins verwenden
Denk daran: Table-Joins in Spark werden über die Cluster-Worker verteilt. Wenn die Daten nicht lokal sind, sind verschiedene Shuffle-Operationen nötig, die die Performance negativ beeinflussen können. Stattdessen nutzen wir Sparks broadcast-Operationen, um jedem Knoten eine Kopie der angegebenen Daten zu geben.
Ein paar Tipps:
- Broadcast das kleinere DataFrame. Je größer das DataFrame, desto länger dauert die Übertragung zu den Worker-Knoten.
- Bei kleinen DataFrames ist es oft besser, auf Broadcasting zu verzichten und Spark die Optimierung selbst überlassen.
- Wenn du dir den Ausführungsplan ansiehst, zeigt ein broadcastHashJoin, dass das Broadcasting erfolgreich konfiguriert wurde.
Die DataFrames flights_df und airports_df stehen dir zur Verfügung.
Diese Übung ist Teil des Kurses
Datenbereinigung mit PySpark
Anleitung zur Übung
- Importiere die Methode
broadcast()auspyspark.sql.functions. - Erzeuge ein neues DataFrame
broadcast_df, indem duflights_dfmitairports_dfper Broadcasting joinst. - Zeige den Abfrageplan an und überlege dir Unterschiede zum Original.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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.____()