前情提要
在pyspark执行group by操作中,数据源是hive,而有时候我们的数据源可能是集群上的某个文件,这时候可以pyspark中使用DataFrame API来根据自动字段执行group by操作,这里还是以sum为例。
基础步骤
- 创建SparkSession:首先创建一个SparkSession,这是使用PySpark的入口。
- 示例数据:定义一些示例数据,并创建一个DataFrame。
- 自动字段列表:定义一个包含需要执行sum操作的字段的列表。
- 执行sum操作:使用DataFrame的select方法和sum函数对指定字段执行sum操作。通过列表推导式生成sum表达式列表,并使用alias方法为每个sum结果指定别名。
- 显示结果:使用show方法显示结果DataFrame。
- 停止SparkSession:最后停止SparkSession
代码示例
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, sum
# 创建SparkSession
spark = SparkSession.builder \
.appName("SumOperationExample") \
.getOrCreate()
# 示例数据
data = [
("Alice", 10, 20, 30),
("Bob", 40, 50, 60),
("Cathy", 70, 80, 90)
]
# 创建DataFrame
columns = ["Name", "Field1", "Field2", "Field3"]
df = spark.createDataFrame(data, columns)
# 自动字段列表
fields_to_sum = ["Field1", "Field2", "Field3"]
# 执行sum操作
sum_exprs = [sum(col(field)).alias(f"sum_{field}") for field in fields_to_sum]
result_df = df.select(sum_exprs)
# 显示结果
result_df.show()
# 停止SparkSession
spark.stop()