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())
相关推荐
xiaogai_gai1 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
skywsp2 小时前
Agent智能体架构设计-知识整理
大数据·人工智能
starzy19903 小时前
KafkaProducer 加载元数据:一条 MetadataRequest 的完整旅程
大数据·kafka
内容营销专家刘鑫炜3 小时前
AI搜索实战专家刘鑫炜:做AI搜索第一步,首先得让 AI 看到你
大数据·人工智能
大大大大晴天3 小时前
每天认识一个组件:Elasticsearch
大数据
Simon_lca3 小时前
ZARA、H&M、SHEIN验厂差异全对比:一套底层记录,三套接口输出
大数据·人工智能·经验分享·科技·制造
爱喝雪碧的可乐3 小时前
DeepSeek 崩了近5小时:一次故障扒透「单点依赖、重试风暴与大模型高可用」
大数据·人工智能·deepseek
Leo.yuan4 小时前
企业级AI分析平台技术选型:FineBI(AI原生版)的NL2BI架构与业务适配能力
大数据·人工智能
疯狂奔跑华丽跌倒4 小时前
医药行业数据治理工具选型,需匹配业务与AI落地需求
大数据·人工智能·经验分享
PingCAP4 小时前
善战者无赫赫之功:消费金融核心系统的数据库选型与升级路径
数据库·分布式·架构