数据工程入门路线图(必看)

『文字版 』:写在前面:本次文章主要分成三个部分【国内市场、海外市场、两者对比】
数据工程入门路线图(必看)

写在前面:本次文章主要分成三个部分【国内市场、海外市场、两者对比】,右侧目录的字体有点小,已经在修改css,但是目前还没找到合适的把他改掉念

数据工程入门路线图(国内市场)

引言

在国内市场,数据工程岗位更强调理论与原理:要理解数据仓库的分层逻辑、大数据组件的协同关系,以及稳定、高效的数据处理流程。

相比云平台操作,企业更看重你是否理解Hadoop 生态体系的原理、能否设计清晰的数仓结构,以及是否能分析系统瓶颈。


先聊策略:别迷信“刷 LeetCode 拿 Offer”

数据工程岗位并不是算法驱动的工作。国内面试更关心:

你是否理解一条数据从采集到分析的全流程? 你能否解释清楚一个分布式任务是如何运行的? 出现延迟、倾斜或数据错误时,你怎么定位问题?

xiaowantree.com 里面会定期更新优质文章,大家可以注册免费或者付费观看,如果需要了解产品,请点击这里,助力您的offer之路。


要拿到数据工程 Offer,你需要这些

  • SQL 与 Hive 基础功:能熟练写多表 JOIN、窗口函数、分区分桶查询。
  • 分布式计算原理:
    • Hadoop 基础:HDFS 存储原理(块、复制、NameNode、DataNode),MapReduce 执行过程(Map/Shuffle/Reduce 流程)。
    • Spark(离线批处理):RDD → DataFrame → Catalyst 优化器 → Tungsten 执行引擎。理解 Shuffle、Skew、AQE、自适应执行。
    • Flink(实时流处理):事件时间与处理时间、窗口机制、水位线(Watermark)、状态管理、Checkpoint、反压机制。
  • 调度与依赖管理:Airflow、DolphinScheduler 原理,DAG、幂等、任务重跑与数据回填。
  • 数据建模与质量治理:ODS→DWD→DWS→ADS 四层建模思想;数据准确性、完整性、一致性检查。

一、学习 SQL:数据工程的“母语”

1. 推荐学习资源
2. 必须掌握的核心知识点
(1)基础操作与聚合
  • JOIN类型:重点掌握INNER JOIN、LEFT JOIN、FULL OUTER JOIN,几乎不用RIGHT JOIN
  • GROUP BY聚合:明确COUNT与COUNT(DISTINCT)的区别(分布式环境中COUNT(DISTINCT)速度慢)

基数缩减:将高基数维度转为低基数,例如按年龄分桶:

SELECT
  CASE WHEN age > 30 THEN 'old' ELSE 'young' END as age_bucket,
  COUNT(1)
FROM users
GROUP BY 1

CASE WHEN+聚合:例如统计过期订单数:

COUNT(CASE WHEN status = 'expired' THEN order_id END)

(2)查询结构对比:CTE/子查询/视图/临时表
类型 适用场景 注意事项
子查询(Subquery) 几乎不用 严重降低数据管道可读性
临时表(Temp Table) 需重复使用某段逻辑 会被物化,能提升后续执行效率
视图(View) 需长期存储逻辑(超出自定义管道执行周期) 不存储数据,仅保存查询逻辑
CTE(公共表表达式) 其他所有场景 最提升代码可读性,优先用
(3)分布式环境中的SQL逻辑
  • 触发“数据混洗(Shuffle)”的关键字:JOIN、GROUP BY、ORDER BY(需注意性能)
  • 高可扩展性关键字(Map端直接执行):SELECT、FROM、WHERE、LIMIT(效率高)

(4)窗口函数:面试高频考点

基础语法:

RANK() OVER (
  PARTITION BY <分区字段>  -- 按什么分组(如部门、国家)
  ORDER BY <排序字段>      -- 组内排序规则
  ROWS BETWEEN <前N行> PRECEDING AND <后N行> FOLLOWING  -- 窗口范围
)

  • 若不指定ROWS BETWEEN,默认是“从窗口起始行到当前行”(累积计算)。
RANK/DENSE_RANK/ROW_NUMBER的区别
窗口函数排名差异对比
函数 无重复值时 有重复值时(如并列第1)
RANK 结果一致 跳过排名(并列1后下一名是3)
DENSE_RANK 结果一致 不跳过排名(并列1后下一名是2)
ROW_NUMBER 结果一致 强制唯一排名(按数据自然顺序分配)
实战场景:

连续登录(面试常考,下面只给出示例,其他高频sql考题在这里 → 高频SQL考题

select a.user_id,
	a.date_rslt,
	count(1) as cnt
from(
	select 
		t.user_id, 
		t.login_time,
		date_sub(login_time, INTERVAL t.num DAY) date_rslt
	from 
		(
		select user_id, 
		login_time, 
		row_number() over(partition by user_id order by login_time) num 
		from login_log
		) t
) a
group by a.user_id, a.date_rslt; 

  • 注意:需确保每个日期都有数据(即使收入为0),否则结果会错。

(5)数据写入:INSERT INTO/INSERT OVERWRITE/MERGE

  • INSERT INTO:仅追加数据,极易重复,需搭配TRUNCATE/DELETE使用
  • INSERT OVERWRITE:覆盖目标分区数据,大厂最常用
  • MERGE:对比新旧数据,仅更新/删除差异行,缺点是超大规模数据下速度慢

二、分布式计算原理

1. 大数据生态的底层逻辑

  • HDFS:分布式文件系统,采用块存储与多副本机制保障可靠性。重点理解 NameNode / DataNode 的职责、文件写入流程、心跳与故障恢复。
  • MapReduce:最早的分布式计算模型,由 Map(映射)和 Reduce(聚合)两阶段组成。理解 Shuffle 阶段的数据倾斜和排序代价。
  • Spark:Hadoop 的升级演进。核心概念包括 RDD、DAG、窄依赖与宽依赖、Shuffle 机制、Catalyst 优化器和内存管理。
  • Flink:实时流处理框架。要掌握有界/无界流、事件时间(Event Time)、Watermark、窗口计算、状态管理与 Checkpoint。

2. 核心性能与稳定性话题

  • Shuffle 机制: 代价高但必要,优化手段包括广播小表、分桶、预聚合。
  • 数据倾斜: 使用随机盐(Salting)或分区调优;Spark 3.x 可启用 AQE 自适应执行。
  • Exactly-once 一致性: 通过 Checkpoint + 幂等 Sink 实现。
  • 资源调度: 理解 YARN / Kubernetes 调度思想与任务并发控制。

常见面试题:

  • 解释 Hadoop 的 MapReduce 执行流程。
  • Spark 的宽依赖和窄依赖有什么区别?
  • Flink 的 Watermark 是如何处理延迟数据的?

三、数据建模与数据质量:让数据“能用、敢用、好用”

1. 分层建模思想

国内主流架构:ODS → DWD → DWS → ADS

层级 主要作用
ODS 存储原始数据,轻清洗
DWD 事实层,保证口径统一
DWS 公共指标层,用于复用
ADS 应用层,为报表/分析提供高效查询
2. 模型类型与取舍
  • 范式建模:数据一致性强,适合高写入、查询复杂的系统。
  • 维度建模(事实表+维度表):分析型任务常用。
  • 宽表(One Big Table):查询快但冗余多,适合固定报表。
3. 数据质量与治理
  • 质量维度:准确性、完整性、一致性、时效性。
  • 治理方法
    • “写入-校验-发布(W-A-P)” 模式;
    • 建立异常监控与对账机制;
    • PII 数据脱敏与权限分级。

常见面试题:

  • 如何保证离线与实时数据口径一致?
  • 什么是 WAP 模式?在数仓开发中如何落地?
  • 说说你理解的数据质量治理体系。

四、作品集项目(不是必须,但有则极具加分)

国内招聘中展示作品集的候选人较少,如果你能展示一套完整的 Demo,将会大幅脱颖而出。

可选展示方向:
  • 小型数仓项目:模拟电商日志 → Hive → DWD → DWS → 报表。
  • 批流一体示例:实现实时指标看板。
  • 数据治理案例:自动校验脚本 + 指标对账系统。

建议在简历中附上架构图核心代码链接(GitHub/Gitee),能有效提升技术说服力。


五、总结:2025 年入门数据工程(国内)——以理论为本,原理为王

当下国内企业更看重你是否能:

  • 理解 Hadoop 生态体系及其原理;
  • 设计合理的数仓分层模型;
  • 讲清楚批流系统的协同机制;
  • 在面试中通过原理解释问题的解决思路。

真正的竞争力,不在于用哪个云,而在于你能否用清晰的逻辑讲明白一个系统为什么这么设计

如果这份路线图对你有帮助,欢迎分享给正在学习数据工程的朋友。
也可以发送你的问题到 qgm226131@gmail.com,我会挑选常见考点整理成下一篇文章。


数据工程入门路线图(海外)

引言

想找到一份数据工程相关工作并不容易,但是也没有想象中的那么难。在网上看到很多人都说进入公司后就是做”SQL Boy“的言论后,却在学习阶段发现技术要学 ——— Spark、Flink, Hadoop、Datalake、 Lakehouse等等

要明确入门方向、掌握学习方法,你需要一些指引。本文将拆解数据工程所需的全部步骤!

先聊策略:别迷信“刷LeetCode拿Offer”

很多人觉得刷够一定数量的LeetCode题目,工作就会自动找上门。但现实几乎从不是这样!

xiaowantree.com 里面会定期更新优质文章,大家可以注册免费或者付费观看,如果需要了解产品,请点击这里,助力您的offer之路。

要拿到数据工程Offer,你需要这些

1. 可验证的核心技能
  • SQL与Python(基础中的基础)
  • 分布式计算能力(三选一:Snowflake/Spark/BigQuery)
  • 任务编排知识(三选一:Airflow/Mage/Databricks Workflows)
  • 数据建模与数据质量管控能力
2. 能证明能力的“硬通货”
  • 1个以上可展示的作品集项目
  • 在LinkedIn和面试中能体现的个人品牌

一、学习SQL:数据工程的“母语”

回避SQL就等于放弃数据工程工作——SQL是你必须掌握的最基础语言。

1. 推荐学习资源
2. 必须掌握的核心知识点

(1)基础操作与聚合

  • JOIN类型:重点掌握INNER JOIN、LEFT JOIN、FULL OUTER JOIN,几乎不用RIGHT JOIN
  • GROUP BY聚合:明确COUNT与COUNT(DISTINCT)的区别(分布式环境中COUNT(DISTINCT)速度慢)

基数缩减:将高基数维度转为低基数,例如按年龄分桶:

SELECT
  CASE WHEN age > 30 THEN 'old' ELSE 'young' END as age_bucket,
  COUNT(1)
FROM users
GROUP BY 1

CASE WHEN+聚合:例如统计过期订单数:

COUNT(CASE WHEN status = 'expired' THEN order_id END)

(2)查询结构对比:CTE/子查询/视图/临时表

类型 适用场景 注意事项
子查询(Subquery) 几乎不用 严重降低数据管道可读性
临时表(Temp Table) 需重复使用某段逻辑 会被物化,能提升后续执行效率
视图(View) 需长期存储逻辑(超出自定义管道执行周期) 不存储数据,仅保存查询逻辑
CTE(公共表表达式) 其他所有场景 最提升代码可读性,优先用

(3)分布式环境中的SQL逻辑

  • 触发“数据混洗(Shuffle)”的关键字:JOIN、GROUP BY、ORDER BY(需注意性能)
  • 高可扩展性关键字(Map端直接执行):SELECT、FROM、WHERE、LIMIT(效率高)

(4)窗口函数:面试高频考点

基础语法:

RANK() OVER (
  PARTITION BY <分区字段>  -- 按什么分组(如部门、国家)
  ORDER BY <排序字段>      -- 组内排序规则
  ROWS BETWEEN <前N行> PRECEDING AND <后N行> FOLLOWING  -- 窗口范围
)

  • 若不指定ROWS BETWEEN,默认是“从窗口起始行到当前行”(累积计算)。

RANK/DENSE_RANK/ROW_NUMBER的区别

函数 无重复值时 有重复值时(如并列第1)
RANK 结果一致 跳过排名(并列1后下一名是3)
DENSE_RANK 结果一致 不跳过排名(并列1后下一名是2)
ROW_NUMBER 结果一致 强制唯一排名(按数据自然顺序分配)

实战场景:滚动计算

按部门计算30天滚动收入(面试常考):

SELECT
  revenue_date,
  SUM(revenue) OVER (
    PARTITION BY department
    ORDER BY revenue_date
    ROWS BETWEEN 30 PRECEDING AND CURRENT ROW
  ) as thirty_day_rolling_revenue
FROM daily_sales

  • 注意:需确保每个日期都有数据(即使收入为0),否则结果会错。

(5)数据写入:INSERT INTO/INSERT OVERWRITE/MERGE

  • INSERT INTO:仅追加数据,极易重复,需搭配TRUNCATE/DELETE使用
  • INSERT OVERWRITE:覆盖目标分区数据,大厂最常用
  • MERGE:对比新旧数据,仅更新/删除差异行,缺点是超大规模数据下速度慢

二、学习Python(或Scala):突破SQL的局限

SQL虽好,但有局限性。要处理复杂逻辑(如API调用、自定义函数),需掌握Python或Scala。

1. 语言选择:Python还是Scala?
  • 零基础:选Python(入门快、生态全,能快速出成果)
  • 有编程基础:可试Scala(静态类型,对schema和数据质量管控更严格,适合Spark深度开发)
2. 核心学习内容

(1)基础:数据类型与结构

  • 基础类型:string、integer、decimal、boolean
  • 复杂结构:list(数组)、dictionary(字典)、stack(栈)、queue(队列)
  • 非必需但面试可能考:heap(堆)、tree(树)、graph(图)(不用深钻,了解基础即可)

(2)算法基础

  • 必学:循环、线性查找、二分查找
  • 必懂:大O表示法(能分析时间/空间复杂度)
  • 非必需但面试可能考:动态规划、贪心算法、迪杰斯特拉算法(不用深钻)

(3)数据工程实战场景

  1. 编写Airflow DAG:用Python定义数据管道流程(最常用场景)
  2. 调用REST API:用requests库处理GET/POST/PUT请求(获取外部数据)
  3. 编写Spark UDF:
    • 部分场景下需用 Python UDF 处理数据,但注意:Spark 1.x/2.x 版本中 Python UDF 性能较差,若使用旧版本,建议用 Scala 编写 UDF。

(4)代码测试

  • Python:用pytest框架测试代码。推荐搭配Chispa库 —— 它专门用于测试 PySpark 任务,功能非常实用。
  • Scala:用JUnit框架

三、学习分布式计算:处理海量数据的核心

分布式计算的核心是“多台机器协同,每台处理一小部分数据”,突破单机算力限制。需三选一:Spark/BigQuery/Snowflake。

1.核心概念:数据混洗(Shuffle)
  • 作用:确保特定数据到特定机器(如“按用户汇总消息数”,需同一用户数据到同一机器)
  • 触发场景:仅JOIN、GROUP BY、ORDER BY时必须Shuffle
  • 误区:Shuffle不是“坏事”——它让分布式计算逻辑接近单机,但超大规模数据下会成性能瓶颈
2. 超大规模场景:Shuffle优化技巧
  • 广播连接(Broadcast JOIN):小表(<5GB)广播到所有节点,无需Shuffle
  • 分桶连接(Bucket JOIN):大表先分桶,后续多次JOIN可复用,减少重复Shuffle
  • 数据集分区:按时间(如按天)分区,避免JOIN全量数据
  • 累积表设计:计算“月活”时用“日活累积表”,不用扫30天原始数据
3. 常见问题:数据倾斜(Skew)
  • 问题:某台机器数据量远大于其他机器,拖慢整体速度
  • 解决方案:
    • Spark 3.x+:启用“自适应执行(Adaptive Execution)”(Databricks支持最好)
    • Spark 3.x以下:对JOIN/GROUP BY关键字“加盐(Salting)”,用随机数平衡数据分布
4. 输出数据:Parquet文件(重点)
  • 特性:支持“行程长度编码(Run-Length Encoding)”,压缩率极高(曾将Airbnb数据集压缩90%+)
  • 场景:用Spark处理后,通常以Parquet格式写入S3/GCP/Azure
  • 注:Snowflake/BigQuery用自研格式,可参考其他专项资料(如“西雅图数据Guy”的内容)

四、数据建模与数据质量:做“可用的好数据”

数据工程师的“产品”是数据——需满足“准确、易用、合规”三个标准。

1. 数据质量的3个核心标准
  • 准确性:无重复、无NULL、格式正确、行数符合预期
  • 易用性:有文档、列名规范、查询高效(避免巨额云资源成本)
  • 合规性:不存储多余的个人身份信息(PII),保护用户隐私
2. 如何实现高质量数据?

(1)确保准确性:校验+自动化

  • 首轮校验:让数据分析师参与(参考Airbnb的MIDAS流程)
  • 自动化校验:用Great Expectations等工具,嵌入数据管道
  • 关键模式:遵循“写入-校验-发布(Write-Audit-Publish)”,不合格数据不进生产

(2)提升易用性:文档+建模

  • 文档先行:搭建管道前,先写需求文档、确认 stakeholder(避免重复开发)

数据建模三选一(按场景选):

建模类型 核心逻辑 适用场景
关系型建模 减少数据重复,查询较复杂 存储成本敏感,数据一致性要求高
维度建模(Kimball) 拆分为事实表+维度表,平衡存储与计算 多数业务分析场景
单一大表(One Big Table) 事实+维度合并,查询极快,数据重复多 计算成本敏感,查询场景固定

(3)确保合规:隐私保护

  • 识别PII:任何可定位到具体用户的信息都算(如手机号、邮箱、精准地址)
  • 处理方式:匿名化处理,平衡“长期分析需求”与“用户隐私”

五、打造作品集项目:让Offer主动找你

作品集是“能力证明”的硬通货,我之前看过一个很典型的例子,他是因为开发过一款产品,这个产品的月活达到了4w人,才被顶级科技公司录取了,所以说如果你现在有很多充足的时间,我非常推荐可以用自己的专业知识去开发一个小产品,虽然不一定会得到市场的认可,但是你可以把社交媒体变成你的名片,向面试官展示你的能力,会给你加分不少。

1. 项目选择3个原则
  • 选你热爱的领域:能支撑你3个月每周5-10小时的投入(不热爱很难坚持)
  • 包含前端展示:用Tableau/Power BI做可视化,或用JavaScript搭简单网站,方便展示
  • 难度匹配:别做“一键完成”的项目(太简单没竞争力),要包含“数据管道+质量校验+自动化运行”
2. 项目必须包含的4个要素
  1. 完整文档:说明输入/输出数据集、质量校验规则、运行频率
  2. 生产环境运行:用Heroku Scheduler(每月5-10美元)或自建Airflow集群,证明管道可落地
  3. 用热门技术:融入Spark/Snowflake/Iceberg/Delta Lake等,贴合行业趋势
  4. 开源到GitHub:附清晰README,方便面试官查看

六、打造个人IP:面试与人脉的“加分项”

有技能+作品集后,IP 能帮你“脱颖而出”。

1. LinkedIn人脉搭建

(1)重点连接两类人

  • 招聘经理/猎头:让他们记住你(即使当前无空缺,未来可能有机会)
  • 同行:互相分享求职技巧,缓解求职压力

(2)人脉搭建技巧

  • 先“互动”再“求内推”:评论对方内容、分享见解,建立信任后再提需求
  • 用“提问”开场:想内推时,先问“您目前负责的业务中,数据管道主要解决什么问题?”,比直接要内推成功率高
  • 接受“低回复率”:初期发20条私信可能仅1-2条回复,优先联系与你资历相近的人

(3)创作内容:让更多人认识你

  • 分享学习笔记(如“Spark Shuffle优化实战”),我也是近一两年才开始养成了写文章的习惯,博士的学习生活也让我更加清楚什么是好的文章,也切切实实感受到了写文章带给我的好处,在这里我可以分享一个小技巧:你写完后你要回过头看看你的这篇文章,如果你是读者,你会愿意看下去吗,如果读者不是那么的专业,他能够看懂吗?想好这些问题,我相信你可以写出一个很棒的文章。
  • 记录项目复盘(如“用Snowflake搭建电商数据管道的踩坑记录”)
  • 我也是靠内容创作赚了一些钱,而且随着你越做你会知道的越多——内容创作的力量远超想象!
2. 面试:做“真实的人”,别做“答题机器”

(1)面试前准备

  • 研究面试官:查LinkedIn,了解其在公司的年限、负责业务
  • 问猎头细节:明确“用什么技术”“团队规模”“文化风格”

(2)面试中要展现的3个特质

  • 热情:对岗位和业务表现出兴趣
  • 沉稳:回答问题时逻辑清晰,不慌不忙
  • 好奇:主动问“这个数据管道当前最大的挑战是什么”,展现思考深度

总结:2025年入门数据工程,难但可行,AI 的发展有点抹杀了DS的市场,但是AI也仍然需要数据

当前就业市场确实严峻,但优秀的工程师和初创公司,往往在困境中成长。跟着这份路线图走,能帮你更接近理想的 data engineering 岗位!

互动:你觉得还有哪些关键技能? 我是否遗漏了什么重要内容?可以发邮件 qgm226131@gmail.com或者在小红书私信告诉我,你的需求会被优先满足。

若觉得这份路线图有用,欢迎分享给朋友!


海内外对比

国内:

面试更偏“笔试化”和“知识覆盖型”,面试官常从底层原理切入——例如问你 Hadoop 的执行流程、Spark 的 Shuffle 为什么慢、Flink 的 Exactly-once 如何实现、数仓的 DWD 和 DWS 各代表什么含义。你可能需要白板手写 SQL、画出数据分层图或解释数据倾斜的解决方案。核心目的是判断:你是否理解整个数据体系的运作逻辑

海外:

他们关注你在真实场景中如何设计系统、如何应对挑战、如何做权衡。例如问你:“在项目里如何保证 pipeline 的稳定性?”、“遇到数据延迟时你怎么 debug?”、“为什么选择 Snowflake 而不是 BigQuery?”甚至“如果要重构你的数据模型,你会如何做?”。核心目的是判断:你能否独立设计与落地工程系统

面试维度 国内数据工程岗位 海外数据工程岗位
面试重点 理论原理:Hadoop、Spark、Flink、数仓建模、数据倾斜、SQL 手写 工程落地:Pipeline 设计、Airflow/dbt、云平台(AWS/GCP/Azure)实践
题型风格 技术笔试题+口头问答:考点密集、覆盖全面 系统设计+项目复盘:注重思维与场景分析
评估核心 原理理解深度、执行逻辑是否透彻 工程经验、可维护性、问题分析与沟通能力
回答方式 注重基础知识、技术细节与公式化表达,但是大厂的考察会把原理挖的很深,如果有实习经历的话主要还是看解决问题的思路 注重故事性、思考过程与工程权衡
成功关键 扎实基础、熟悉框架原理、清晰讲解数据流 能讲出决策过程、项目复盘逻辑、体现实战能力
About the author
小万来了

小万和大树知识成长营地

注册成功!

欢迎回来,已成功登录。

你已成功订阅 小万和大树知识成长营地。

成功!请查收登录邮件。

成功!账单信息已更新。

账单信息未更新。