前情提要
在处理亿级别数据时,常常输入是hive表,因此需要在pypark流程中引入一些场景sql操作,其中group by就是比较常见的操作。
基础步骤
- 创建SparkSession:通过enableHiveSupport()方法启用Hive支持,确保能够访问Hive表。
- 加载数据:使用spark.sql()方法从Hive表中加载数据到DataFrame。
- 分组聚合操作:使用groupBy方法按field1和field2进行分组,并使用agg方法结合sum函数对field3进行求和操作。alias方法用于为聚合结果指定别名。
- 显示结果:使用show方法显示聚合结果。
- 停止SparkSession:最后停止SparkSession以释放资源。通常该步骤不需要,但是在例行化任务中,会偶发任务已执行完成,但是仍然占用资源情况,所以该步骤最好加上
代码展示
python
from pyspark.sql import SparkSession
from pyspark.sql.functions import sum
# 创建SparkSession并启用Hive支持
spark = SparkSession.builder \
.appName("GroupByExample") \
.enableHiveSupport() \
.getOrCreate()
# 假设已在Hive中创建了一个名为your_table_name的表
# 该表有字段: field1, field2, field3
# 从Hive表中加载数据
df = spark.sql("SELECT * FROM your_table_name")
# 使用groupBy和sum函数进行分组聚合操作
result_df = df.groupBy("field1", "field2").agg(sum("field3").alias("sum_field3"))
# 显示结果
result_df.show()
# 停止SparkSession
spark.stop()