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())
相关推荐
一个有温度的技术博主1 小时前
Redis主从同步原理:从全量同步到增量同步的完整解析
redis·分布式·缓存
yaoyouzhong2 小时前
MySQL 批量插入详解:快速提升大数据导入效率的实战方法
大数据·数据库·mysql
云栖梦泽4 小时前
AI安全合规与治理:行业发展趋势与职业展望
大数据·人工智能·安全
得物技术4 小时前
财务数仓 Claude AI Coding 应用实战|得物技术
大数据·llm·aiops
rainy雨5 小时前
免费且好用的精益工具在哪里?2026年精益工具清单整理
大数据·人工智能·信息可视化·数据挖掘·数据分析·精益工程
蚂蚁数据AntData5 小时前
破解AI“机器味“困境:HeartBench评测实践详解
大数据·人工智能·算法·机器学习·语言模型·开源
Jane - UTS 数据传输系统6 小时前
立足国家“十五五”数智化战略大局,紧扣上海“2+3+6+6”产业布局,UTS数据传输系统筑牢数智化转型数据底座
大数据·人工智能·跨平台·信创·跨数据库·十五五·国产数据库适配
xcbrand6 小时前
口碑好的品牌策划厂家
大数据·人工智能·python
wzl202612139 小时前
企微私域工具免费版vs付费版:数据统计API差异与自动化报表脚本实现
大数据·自动化·企业微信
key_3_feng9 小时前
MCP协议:解锁AI模型与外部世界的高效协作
大数据·人工智能·mcp