Agregações no PySpark

Introdução ao PySpark

Benjamin Schmidt

Data Engineer

Visão geral das agregações SQL no PySpark

  • Agregações SQL comuns funcionam com spark.sql()
    # Consulta de agregação SQL
    spark.sql("""
      SELECT Department, SUM(Salary) AS Total_Salary, AVG(Salary) AS Average_Salary
      FROM employees
      GROUP BY Department
    """).show()
    
Introdução ao PySpark

Combinando operações de DataFrame e SQL

# Filtrar salários acima de 3000
filtered_df = df.filter(df.Salary > 3000)

# Registrar DataFrame filtrado como uma viewiltered_df.createOrReplaceTempView("filtered_employees")

# Agregar usando SQL na view filtrada spark.sql(""" SELECT Department, COUNT(*) AS Employee_Count FROM filtered_employees GROUP BY Department """).show()
Introdução ao PySpark

Lidando com tipos de dados em agregações

# Exemplo de conversão de tipo
data = [("HR", "3000"), ("IT", "4000"), ("Finance", "3500")]
columns = ["Department", "Salary"]
df = spark.createDataFrame(data, schema=columns)

# Converter coluna Salary para inteiro df = df.withColumn("Salary", df["Salary"].cast("int")) # Realizar agregação df.groupBy("Department").sum("Salary").show()
Introdução ao PySpark

RDDs para agregações

# Exemplo de agregação com RDDs
rdd = df.rdd.map(lambda row: (row["Department"], row["Salary"]))

rdd_aggregated = rdd.reduceByKey(lambda x, y: x + y)
print(rdd_aggregated.collect())
Introdução ao PySpark

Melhores práticas para agregações no PySpark

  • Filtrar cedo: Reduza o tamanho dos dados antes de agregar
  • Lidar com tipos de dados: Garanta que os dados estejam limpos e tipados corretamente
  • Evitar operações que usam todo o conjunto: Minimize operações como groupBy()
  • Escolher a interface certa: Prefira DataFrames pela otimização
  • Monitorar desempenho: Use explain() para inspecionar e otimizar o plano de execução
Introdução ao PySpark

Pontos principais

  • Agregações SQL no PySpark: Funções como SUM() e AVERAGE() para resumir dados
  • DataFrames e SQL: Combinando abordagens para manipulação flexível
  • Tipos de Dados: Lidando com incompatibilidades durante agregações
  • RDDs vs DataFrames: Entendendo as diferenças e escolhendo a ferramenta certa
Introdução ao PySpark

Vamos praticar!

Introdução ao PySpark

Preparing Video For Download...