PySpark-aggregaties

Introductie tot PySpark

Benjamin Schmidt

Data Engineer

Overzicht PySpark SQL-aggregaties

  • Veelvoorkomende SQL-aggregaties werken met spark.sql()
    # SQL-aggregatiequery
    spark.sql("""
      SELECT Department, SUM(Salary) AS Total_Salary, AVG(Salary) AS Average_Salary
      FROM employees
      GROUP BY Department
    """).show()
    
Introductie tot PySpark

DataFrame- en SQL-operaties combineren

# Filter salarissen boven 3000
filtered_df = df.filter(df.Salary > 3000)

# Geregistreerde gefilterde DataFrame als view
filtered_df.createOrReplaceTempView("filtered_employees")

# Aggregatie met SQL op de gefilterde view spark.sql(""" SELECT Department, COUNT(*) AS Employee_Count FROM filtered_employees GROUP BY Department """).show()
Introductie tot PySpark

Datatypes beheren bij aggregaties

# Voorbeeld van typecasting
data = [("HR", "3000"), ("IT", "4000"), ("Finance", "3500")]
columns = ["Department", "Salary"]
df = spark.createDataFrame(data, schema=columns)

# Salariskolom omzetten naar integer df = df.withColumn("Salary", df["Salary"].cast("int")) # Aggregatie uitvoeren df.groupBy("Department").sum("Salary").show()
Introductie tot PySpark

RDD's voor aggregaties

# Voorbeeld van aggregatie met RDD's
rdd = df.rdd.map(lambda row: (row["Department"], row["Salary"]))

rdd_aggregated = rdd.reduceByKey(lambda x, y: x + y)
print(rdd_aggregated.collect())
Introductie tot PySpark

Best practices voor PySpark-aggregaties

  • Vroeg filteren: Verminder de datagrootte voordat je gaat aggregeren
  • Datatypes beheren: Zorg dat data schoon en correct getypt is
  • Vermijd operaties op de hele dataset: Minimaliseer operaties zoals groupBy()
  • Kies de juiste interface: Geef de voorkeur aan DataFrames voor de meeste taken vanwege hun optimalisaties
  • Prestaties monitoren: Gebruik explain() om het uitvoeringsplan te bekijken en te optimaliseren
Introductie tot PySpark

Belangrijke punten

  • PySpark SQL-aggregaties: Functies zoals SUM() en AVERAGE() voor data samenvatten
  • DataFrames en SQL: Beide benaderingen combineren voor flexibele datamanipulatie
  • Datatypes beheren: Problemen met typeverschillen bij aggregaties aanpakken
  • RDD's vs DataFrames: De afwegingen begrijpen en het juiste hulpmiddel kiezen
Introductie tot PySpark

Aan de slag!

Introductie tot PySpark

Preparing Video For Download...