PySpark-Aggregationen

Einführung in PySpark

Benjamin Schmidt

Data Engineer

Überblick über PySpark SQL-Aggregationen

  • Gängige SQL-Aggregationen funktionieren mit spark.sql()
    # SQL-Aggregationsabfrage
    spark.sql("""
      SELECT Department, SUM(Salary) AS Total_Salary, AVG(Salary) AS Average_Salary
      FROM employees
      GROUP BY Department
    """).show()
    
Einführung in PySpark

DataFrame- und SQL-Operationen kombinieren

# Gehälter über 3000 filtern
filtered_df = df.filter(df.Salary > 3000)

# Gefiltertes DataFrame als View registrieren
filtered_df.createOrReplaceTempView("filtered_employees")

# Aggregation mit SQL auf der gefilterten View spark.sql(""" SELECT Department, COUNT(*) AS Employee_Count FROM filtered_employees GROUP BY Department """).show()
Einführung in PySpark

Datentypen bei Aggregationen handhaben

# Beispiel für Typumwandlung
data = [("HR", "3000"), ("IT", "4000"), ("Finance", "3500")]
columns = ["Department", "Salary"]
df = spark.createDataFrame(data, schema=columns)

# Spalte Salary in Integer umwandeln df = df.withColumn("Salary", df["Salary"].cast("int")) # Aggregation durchführen df.groupBy("Department").sum("Salary").show()
Einführung in PySpark

RDDs für Aggregationen

# Beispiel für Aggregation mit RDDs
rdd = df.rdd.map(lambda row: (row["Department"], row["Salary"]))

rdd_aggregated = rdd.reduceByKey(lambda x, y: x + y)
print(rdd_aggregated.collect())
Einführung in PySpark

Best Practices für PySpark-Aggregationen

  • Früh filtern: Datenmenge vor Aggregationen reduzieren
  • Datentypen handhaben: Daten sauber und korrekt typisiert halten
  • Operationen auf gesamte Daten vermeiden: Operationen wie groupBy() minimieren
  • Richtige Schnittstelle wählen: DataFrames wegen ihrer Optimierungen bevorzugen
  • Leistung überwachen: Mit explain() den Ausführungsplan prüfen und optimieren
Einführung in PySpark

Wichtige Erkenntnisse

  • PySpark SQL-Aggregationen: Funktionen wie SUM() und AVERAGE() zur Datenzusammenfassung
  • DataFrames und SQL: Beide Ansätze für flexible Datenmanipulation kombinieren
  • Datentypen handhaben: Probleme mit Typinkompatibilitäten bei Aggregationen lösen
  • RDDs vs DataFrames: Vor- und Nachteile verstehen und das richtige Tool wählen
Einführung in PySpark

Lass uns üben!

Einführung in PySpark

Preparing Video For Download...