订阅更新

请描述一个你用Spark做过的项目

Spark手册 第 20 题 约 2 分钟读完

本文目录
  1. 总结
  2. 参考回答:EMR到Databricks全链路迁移 + Spark作业优化
  3. 这道题的核心要点

总结

这道题用STAR法则组织。提前准备好你最拿得出手的Spark项目,确保有背景、有任务、有行动细节、有可量化结果。反复练习到5分钟能流畅讲完。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

这是所有Spark面试题里最重要的一道。前靂19道考技术原理,这道考项目经验和表达能力。它没有标准答案,但有标准结构:STAR法则。今天用我的真实项目做一个完整示范。

参考回答:EMR到Databricks全链路迁移 + Spark作业优化

S(Situation / 背景)

“我在某出海硬件公司负责数据平台。当时的技术栈是AWS EMR + Hive + Spark,每天处理约30亿条埋点数据,100+个Spark作业。问题很多:作业经常OOM、Shuffle性能差、小文件严重、运维成本高。”

T(Task / 任务)

“我负责两件事:把整个数据平台仏EMR迁移到Databricks(Spark引擎升级 + 数据格式切换为Delta Lake),以及系统性地优化所有Spark作业的性能。”

A(Action / 行动)

① 平台迁移(耗3个月):

用双写双读的灰度方案,100+个Spark作业分批迁移。数据格式从混合(ORC/Parquet/JSON)统一切换为Delta Lake。迁移过程中处20%的SQL因为方言差异需要微调。最终零故障完成。

② Spark作业系统性优化:

• 全局开启AQE → 自动合并小分区 + 自动处理倾斜 + 动态切换Join

• autoBroadcastJoinThreshold从10MB调到200MB → 多个Join变成Broadcast,避免Shuffle

• 所有SELECT *改为只选需要的列 → Shuffle数据量减少30%

• 写入后统一执行OPTIMIZE + Z-Ordering → 合并小文件 + 加速查询

• 维度表更新仏UNION改为MERGE INTO → 代码量减少70%

R(Result / 结果)

• 查询延迟降低70%(AQE + Z-Ordering + Broadcast Join)

• 整体ETL执行时间减少40%(AQE + Shuffle优化)

• 存储成本降低35%(格式统一 + 小文件合并 + 生命周期管理)

• 运维成本降低40%(不再自己管理EMR集群)

• 迁移过程零故障(灰度方案 + 双写对账)

这道题的核心要点

① 串联了前19篇的知识点: OOM排查、Join优化、倾斜处理、AQE、Shuffle优化、小文件治理、Delta Lake——每一个都能展开讲。

② 有具体数字: 30亿条、100+作业、降低70%/40%/35%/40%。

③ 有工程能力: 灰度方案、零故障、双写对账,体现的是成熟的工程思维。

④ 有业务价值: 每个结果都能翻译成业务价值。

刷题进度保存在当前浏览器