PySpark-aggregeringar

Introduktion till PySpark

Benjamin Schmidt

Data Engineer

Översikt: SQL-aggregeringar i PySpark

  • Vanliga SQL-aggregeringar fungerar med spark.sql()
    # SQL aggregation query
    spark.sql("""
      SELECT Department, SUM(Salary) AS Total_Salary, AVG(Salary) AS Average_Salary
      FROM employees
      GROUP BY Department
    """).show()
    
Introduktion till PySpark

Kombinera DataFrame- och SQL-operationer

# Filter salaries over 3000
filtered_df = df.filter(df.Salary > 3000)

# Register filtered DataFrame as a view
filtered_df.createOrReplaceTempView("filtered_employees")

# Aggregate using SQL on the filtered view spark.sql(""" SELECT Department, COUNT(*) AS Employee_Count FROM filtered_employees GROUP BY Department """).show()
Introduktion till PySpark

Hantera datatyper vid aggregeringar

# Example of type casting
data = [("HR", "3000"), ("IT", "4000"), ("Finance", "3500")]
columns = ["Department", "Salary"]
df = spark.createDataFrame(data, schema=columns)

# Convert Salary column to integer df = df.withColumn("Salary", df["Salary"].cast("int")) # Perform aggregation df.groupBy("Department").sum("Salary").show()
Introduktion till PySpark

RDD:er för aggregeringar

# Example of aggregation with RDDs
rdd = df.rdd.map(lambda row: (row["Department"], row["Salary"]))

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

Bästa praxis för PySpark-aggregeringar

  • Filtrera tidigt: Minska datamängden innan aggregering
  • Hantera datatyper: Se till att data är korrekt typat och rent
  • Undvik heldataoperationer: Minimera användningen av t.ex. groupBy()
  • Välj rätt gränssnitt: Föredra DataFrames för de flesta uppgifter tack vare deras optimeringar
  • Övervaka prestanda: Använd explain() för att granska och optimera exekveringsplanen
Introduktion till PySpark

Viktiga lärdomar

  • SQL-aggregeringar i PySpark: Funktioner som SUM() och AVERAGE() för att sammanfatta data
  • DataFrames och SQL: Kombinera båda metoderna för flexibel datahantering
  • Datatyper: Hantera typmissmatchningar vid aggregeringar
  • RDD:er vs DataFrames: Förstå avvägningarna och välja rätt verktyg
Introduktion till PySpark

Nu kör vi en övning!

Introduktion till PySpark

Preparing Video For Download...