Spark DataFrame常见的Transformation和Actions详解

1. DataFrame 操作的类型划分及其常见方法

DataFrame 操作的类型划分及其常见方法:
不触发Action
触发Action
<<abstract>>
DataFrame操作
<<lazy>>
转换操作
+select()
+filter()
+where()
+groupBy()
+agg()
+orderBy()
+sort()
+distinct()
+drop()
+withColumn()
+withColumnRenamed()
+join()
+union()
+sample()
+repartition()
+coalesce()
+limit()
+rollup()
+cube()
+pivot()
<<eager>>
动作操作
+show()
+collect()
+count()
+take()
+head()
+first()
+foreach()
+save()
+write()
+toPandas()
+toJSON()
+toLocalIterator()
+printSchema()
+explain()
+cache()
+persist()

2. 表格表示

下表列出了常见的 DataFrame 操作及其是否触发 Action:

操作名称 类型 是否触发 Action 描述
select() 转换 选择指定列,返回新的 DataFrame
filter() / where() 转换 根据条件过滤行
groupBy() 转换 按指定列分组
agg() 转换 执行聚合操作
orderBy() / sort() 转换 按指定列排序
distinct() 转换 去重操作
drop() 转换 删除指定列
withColumn() 转换 添加或替换列
withColumnRenamed() 转换 重命名列
join() 转换 连接两个 DataFrame
union() 转换 合并两个 DataFrame
sample() 转换 随机采样
repartition() 转换 重新分区
coalesce() 转换 减少分区数
limit() 转换 限制返回行数
rollup() / cube() 转换 多维聚合
pivot() 转换 数据透视
show() 动作 显示前 n 行数据
collect() 动作 将所有数据收集到驱动程序
count() 动作 统计行数
take() 动作 取前 n 行数据
head() / first() 动作 取第一行或前几行数据
foreach() 动作 对每行应用函数
save() / write() 动作 将数据写入外部存储
toPandas() 动作 转换为 Pandas DataFrame
toJSON() 动作 转换为 JSON 格式
toLocalIterator() 动作 返回本地迭代器
printSchema() 动作 打印 schema 信息
explain() 动作 显示执行计划
cache() / persist() 动作 缓存 DataFrame

关键区别

  1. 转换操作(Transformations)

    • 惰性执行,不立即计算
    • 返回新的 DataFrame
    • 构建逻辑执行计划(DAG)
    • 需要动作操作触发实际执行
  2. 动作操作(Actions)

    • 立即触发计算
    • 返回具体结果或执行输出。注:某些操作如 printSchema()explain() 虽然不返回计算结果,但仍属于动作操作,因为它们会触发 Spark 分析逻辑计划并返回信息。
    • 执行所有累积的转换操作
    • 可能涉及数据移动(如 collect())
相关推荐
GIS数据转换器29 分钟前
延凡城市生命线系统
大数据·人工智能·信息可视化·数据挖掘·无人机
摇滚侠1 小时前
JAVA 项目教程《黑马商城-Redis 篇》,分布式架构项目,从开发到部署
java·redis·分布式
运维行者_1 小时前
网络监控方案从零开始 -- 企业级完整指南
大数据·运维·服务器·网络·数据库·人工智能·自动化
l1t2 小时前
四种python工具包用SQL查询csv和parquet文件的方法比较
大数据·python·sql
weixin_505154463 小时前
博维数孪创新引领,3D作业指导助力制造业升级
大数据·人工智能·3d·数字孪生·数据可视化·产品交互展示
LONGZETECH5 小时前
新能源汽车维护仿真软件技术架构解析+ 教学落地实操
大数据·c语言·人工智能·架构·汽车·汽车仿真教学软件·汽车教学软件
星辰_mya6 小时前
Redlock 算法:是分布式锁的“圣杯”还是“鸡肋”
jvm·redis·分布式·面试·redlock
武子康6 小时前
大数据-250 离线数仓 - 电商分析 Hive 数仓 ADS 层订单分析实战:全国/大区/城市分类汇总与 Airflow 调度
大数据·后端·apache hive
QYR_Jodie7 小时前
半导体与新能源电子驱动,稳增前行:全球激光焊锡机2026-2032年CAGR4.7%,2032年锚定1.32亿美元
大数据·市场报告
SelectDB7 小时前
PostgreSQL + Apache Doris:构建用于实时分析的 HTAP 架构
大数据·数据库·数据分析