pyspark执行group by操作

前情提要

在处理亿级别数据时,常常输入是hive表,因此需要在pypark流程中引入一些场景sql操作,其中group by就是比较常见的操作。

基础步骤

  1. 创建SparkSession:通过enableHiveSupport()方法启用Hive支持,确保能够访问Hive表。
  2. 加载数据:使用spark.sql()方法从Hive表中加载数据到DataFrame。
  3. 分组聚合操作:使用groupBy方法按field1和field2进行分组,并使用agg方法结合sum函数对field3进行求和操作。alias方法用于为聚合结果指定别名。
  4. 显示结果:使用show方法显示聚合结果。
  5. 停止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()
相关推荐
gis分享者19 小时前
学习threejs,打造原生3D高斯溅落实时渲染器
spark·threejs·ply·高斯·splat·溅落·实时渲染器
鸿乃江边鸟20 小时前
Spark Datafusion Comet 向量化Rust Native--读数据
rust·spark·native·arrow
看起来不那么蠢的昵称20 小时前
Apache Spark 开发与调优实战手册 (Java / Spark 2.x)
java·spark
看起来不那么蠢的昵称20 小时前
高性能 Spark UDF 开发手册
java·大数据·spark
亚林瓜子2 天前
AWS Glue任务中使用一个dynamic frame数据过滤另外一个dynamic frame数据
java·python·sql·spark·aws·df·py
鹿衔`2 天前
Apache Spark 任务资源配置与优先级指南
python·spark
鸿乃江边鸟3 天前
Spark Datafusion Comet 向量化Rust Native-- 数据写入
大数据·rust·spark·native
亚林瓜子3 天前
Spark SQL中时间戳条件约束与字符串判空
大数据·sql·spark·string·timestamp
亚林瓜子4 天前
AWS中国云中的ETL之从Amazon Glue Data Catalog搬数据到MySQL(Glue版)
python·mysql·spark·etl·aws·glue·py
【赫兹威客】浩哥4 天前
【赫兹威客】伪分布式Spark测试教程
大数据·分布式·spark