Agregaciones en PySpark

Introducción a PySpark

Benjamin Schmidt

Data Engineer

Resumen de agregaciones SQL en PySpark

  • Agregaciones SQL comunes con spark.sql()
    # Consulta de agregación SQL
    spark.sql("""
      SELECT Department, SUM(Salary) AS Total_Salary, AVG(Salary) AS Average_Salary
      FROM employees
      GROUP BY Department
    """).show()
    
Introducción a PySpark

Combinando operaciones de DataFrame y SQL

# Filtrar salarios mayores a 3000
filtered_df = df.filter(df.Salary > 3000)

# Registrar DataFrame filtrado como vista
filtered_df.createOrReplaceTempView("filtered_employees")

# Agregar usando SQL en la vista filtrada spark.sql(""" SELECT Department, COUNT(*) AS Employee_Count FROM filtered_employees GROUP BY Department """).show()
Introducción a PySpark

Manejo de tipos de datos en agregaciones

# Ejemplo de conversión de tipos
data = [("HR", "3000"), ("IT", "4000"), ("Finance", "3500")]
columns = ["Department", "Salary"]
df = spark.createDataFrame(data, schema=columns)

# Convertir columna Salary a entero df = df.withColumn("Salary", df["Salary"].cast("int")) # Realizar agregación df.groupBy("Department").sum("Salary").show()
Introducción a PySpark

RDDs para agregaciones

# Ejemplo de agregación con RDDs
rdd = df.rdd.map(lambda row: (row["Department"], row["Salary"]))

rdd_aggregated = rdd.reduceByKey(lambda x, y: x + y)
print(rdd_aggregated.collect())
Introducción a PySpark

Mejores prácticas para agregaciones en PySpark

  • Filtrar temprano: Reduce el tamaño de los datos antes de agregar
  • Manejar tipos de datos: Asegúrate de que los datos estén limpios y bien tipados
  • Evitar operaciones que usen todo el conjunto: Minimiza operaciones como groupBy()
  • Elegir la interfaz correcta: Prefiere DataFrames por sus optimizaciones
  • Monitorear rendimiento: Usa explain() para revisar el plan de ejecución y optimizar
Introducción a PySpark

Puntos clave

  • Agregaciones SQL en PySpark: Funciones como SUM() y AVERAGE() para resumir datos
  • DataFrames y SQL: Combinando ambos para manipulación flexible de datos
  • Manejo de Tipos de Datos: Solucionando problemas de incompatibilidad de tipos
  • RDDs vs DataFrames: Entendiendo las diferencias y eligiendo la mejor opción
Introducción a PySpark

¡Vamos a practicar!

Introducción a PySpark

Preparing Video For Download...