Introduction to PySpark
Benjamin Schmidt
Data Engineer
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()
# 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()
# 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()
# 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())
groupBy()
explain()
to inspect the execution plan and optimize accordinglySUM()
and AVERAGE()
for summarizing dataIntroduction to PySpark