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())
相关推荐
CallFay云起未来15 分钟前
AI客服上线后多久才能回本?从TCO到ROI的完整测算方法
java·大数据·人工智能·架构·文心一言
Elastic 中国社区官方博客40 分钟前
使用 Lucene 搜索你的 Bean —— Elasticsearch
大数据·开发语言·人工智能·elasticsearch·搜索引擎·全文检索·lucene
闲蛋小超人笑嘻嘻1 小时前
Git Worktree 详解
大数据·elasticsearch·搜索引擎
.冰块.1 小时前
Ceph 分布式存储实战(二):存储池管理与 cephx 认证授权
分布式·ceph·rados·纠删码·复本池·cephx认证与用户权限
制造业的搬运工1 小时前
车载 PCB 打样周期与选型指南:从 IATF 16949 到 IPC-6012 的 5 个硬指标
大数据·网络·人工智能·制造·pcb工艺
55873 生态系统1 小时前
55873 正和博弈经济模型:重构数字时代商业价值体系
大数据·人工智能·重构·全域文明操作系统·55873 操作系统·55873全域文明生态体系
jqpwxt2 小时前
启点创新科技景区私有化票务管理系统:智慧景区数字化建设核心服务商,以本地部署筑牢景区数字化安全与稳定底座
大数据·人工智能·科技·云计算·旅游
2601_965742222 小时前
短视频脚本创作方法分享:本地生活类账号的起步思路
大数据·人工智能·算法·ai·新媒体运营·生活
旋生万物2 小时前
素数螺旋映射 $z_n=n^{1+i}$ 的角分布统计检验与零模型对比
大数据·前端·人工智能·算法·云原生·螺旋生成论·螺旋相位