Verwendung von Broadcasting bei Spark-Joins
Denke daran, dass Tabellen-Joins in Spark zwischen den Cluster-Arbeitern aufgeteilt werden. Wenn die Daten nicht lokal sind, sind verschiedene Shuffle-Operationen erforderlich, die sich negativ auf die Leistung auswirken können. Stattdessen werden wir die broadcast
Operationen von Spark nutzen, um jedem Knoten eine Kopie der angegebenen Daten zu geben.
Ein paar Tipps:
- Sende den kleineren DataFrame. Je größer der DataFrame ist, desto mehr Zeit wird für die Übertragung an die Worker Nodes benötigt.
- Bei kleinen DataFrames ist es vielleicht besser, das Broadcasting zu überspringen und Spark die Optimierung selbst vornehmen zu lassen.
- Wenn du dir den Ausführungsplan der Abfrage ansiehst, zeigt ein broadcastHashJoin an, dass du das Broadcasting erfolgreich konfiguriert hast.
Die DataFrames flights_df
und airports_df
stehen dir zur Verfügung.
Diese Übung ist Teil des Kurses
Daten bereinigen mit PySpark
Anleitung zur Übung
- Importiere die Methode
broadcast()
vonpyspark.sql.functions
. - Erstelle einen neuen DataFrame
broadcast_df
, indem duflights_df
mitairports_df
verbindest. - Zeige den Abfrageplan und berücksichtige die Unterschiede zum Original.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# 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.____()