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())
相关推荐
得物技术21 小时前
从埋点需求到规则资产:Hermes Agent 重构得物数仓工作流
大数据·llm·ai编程
久美子1 天前
AI驱动数仓建设的Harness工程实践——本体建模、知识分层与上下文工程
大数据
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
大志哥1232 天前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch
果丁智能2 天前
物联网智能锁赋能集中式住宿:身份核验与远程权限管控的全链路技术实践
大数据·人工智能·物联网·智能家居
ApacheSeaTunnel2 天前
实战演示 | 基于 Apache SeaTunnel 与 Apache DolphinScheduler 实现 MySQL 到 Doris 离线定时增量同步
大数据·mysql·开源·doris·数据集成·seatunnel·数据同步
weixin_397574092 天前
PDF复杂表格的1:1还原引擎:跨页表格自动拼接技术实战
大数据·人工智能·pdf
极光代码工作室2 天前
基于数据仓库的电商数据分析平台
大数据·hadoop·python·spark·数据可视化
秋名山码民2 天前
Graph RAG 深度解析:从向量检索到知识推理的技术演进
大数据·人工智能·rag
JLWcai202510092 天前
铸造领域树脂砂轮|金利威多场景解决方案,20 + 配方覆盖全需求
mongodb·zookeeper·eureka·spark·rabbitmq·memcached·storm