Agregări PySpark

Introducere în PySpark

Benjamin Schmidt

Data Engineer

Prezentare generală a agregărilor PySpark SQL

  • Agregările SQL comune funcționează cu 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()
    
Introducere în PySpark

Combinarea operațiunilor DataFrame și SQL

# 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()
Introducere în PySpark

Gestionarea tipurilor de date în agregări

# 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()
Introducere în PySpark

RDD-uri pentru agregări

# 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())
Introducere în PySpark

Bune practici pentru agregările PySpark

  • Filtrați devreme: Reduceți volumul datelor înainte de agregări
  • Gestionați tipurile de date: Asigurați-vă că datele sunt curate și corect tipizate
  • Evitați operațiunile pe întregul set de date: Minimizați operațiuni precum groupBy()
  • Alegeți interfața potrivită: Preferați DataFrame-urile pentru optimizările lor
  • Monitorizați performanța: Folosiți explain() pentru a inspecta și optimiza planul de execuție
Introducere în PySpark

Concluzii cheie

  • Agregări PySpark SQL: Funcții precum SUM() și AVERAGE() pentru rezumarea datelor
  • DataFrame-uri și SQL: Combinarea ambelor abordări pentru manipulare flexibilă
  • Gestionarea tipurilor de date: Rezolvarea problemelor de incompatibilitate la agregări
  • RDD-uri vs DataFrame-uri: Înțelegerea compromisurilor și alegerea instrumentului potrivit
Introducere în PySpark

Să exersăm!

Introducere în PySpark

Preparing Video For Download...