PySpark in großem Maßstab

Einführung in PySpark

Benjamin Schmidt

Data Engineer

Skalierung nutzen

  • Pyspark arbeitet ohne Probleme mit Gigabytes und Terabytes an Daten.
  • Bei PySpark geh es um schnelle und effiziente Verarbeitung.
  • Wenn du die Ausführung von PySpark verstehst, kannst du noch effizienter arbeiten.
  • Verwende Broadcast, um den ganzen Cluster zu verwalten.
joined_df = large_df.join(broadcast(small_df), 
                          on="key_column", how="inner")
joined_df.show()
Einführung in PySpark

Ausführungspläne

# Using explain() to view the execution plan
df.filter(df.Age > 40).select("Name").explain()
== Physical Plan ==
*(1) Filter (isnotnull(Age) AND (Age > 30))
+- Scan ExistingRDD[Name:String, Age:Int]
1 https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.explain.html
Einführung in PySpark

Caching und Persistieren von DataFrames

  • Zwischenspeicherung (Caching): Speichert Daten im Arbeitsspeicher für schnelleren Zugriff auf kleinere Datensätze
  • Persistieren: Speichert Daten bei größeren Datensätzen in verschiedenen Speicherebenen
df = spark.read.csv("large_dataset.csv", header=True, inferSchema=True)

# Cache the DataFrame
df.cache()

# Perform multiple operations on the cached DataFrame df.filter(df["column1"] > 50).show() df.groupBy("column2").count().show()
Einführung in PySpark

Persistieren von DataFrames mit verschiedenen Speicherebenen

# Persist the DataFrame with storage level
from pyspark import StorageLevel

df.persist(StorageLevel.MEMORY_AND_DISK)

# Perform transformations result = df.groupBy("column3").agg({"column4": "sum"}) result.show() # Unpersist after use df.unpersist()
Einführung in PySpark

PySpark optimieren

  • Kleine Unterabschnitte: Je mehr Daten verwendet werden, desto langsamer läuft alles: Wähle Tools wie map() statt groupby(), weil die Methoden selektiv sind.
  • Broadcast-Joins: Broadcast nutzt die ganze Rechenleistung, auch bei kleineren Datensätzen.
  • Vermeide wiederholte Aktionen: Immer wieder die gleichen Daten zu bearbeiten kostet Zeit und Rechenleistung, ohne Vorteil.
Einführung in PySpark

Lass uns üben!

Einführung in PySpark

Preparing Video For Download...