知识点学习顺序
教程分为知识点和项目两部分。这里是知识点线:按“地基 → SQL → 数仓 → 离线 → 加分 → 平台 → 求职”推进,每个阶段都有可验证产出。项目单独作为一条线,从项目入口进入。
每章先按示例跑出结果,再回头补概念。见过的结果比背过的定义更牢。
第一遍看懂,第二遍照着敲,第三遍关掉教程自己写。第三遍才算学会。
一张架构图、一段 SQL、一次对账、一个 commit。别用“看了几章”衡量进度。
知识点阶段
按顺序读,不建议跳;选学内容可以按需取舍。
地基:先能干活
把环境、Linux、Git、Python 准备好,知道数据开发到底做什么。
这一阶段学什么
动手任务
- 装好 Python、DuckDB、Git Bash,并用 DuckDB 查询一张小 CSV
- 在 Git Bash 里完成 20 个常用 Linux 命令练习
- 建一个 GitHub 仓库并完成第一次 commit
- 把一个小脚本整理成带 cli、日志和单元测试的 jobs 包
验收标准(全勾才算过)
- 能说出数据开发、数据分析、后端开发的区别
- 本机能用 DuckDB 直接查询 data/sample 下的示例 CSV
- 能用 grep/awk 统计一个日志或 CSV 的 TopN
- 能运行 python -m jobs.etl.cli 并说明退出码的含义
卡住了怎么办
常见卡点:卡在环境:先装 Python + DuckDB 两件事,Java/Spark 可以延后
常见卡点:命令找不到:确认 Git Bash 和 PATH,不要用 CMD 硬套 Linux 命令
SQL 硬功夫
从单表查询练到窗口函数,能独立完成面试级 SQL。
这一阶段学什么
动手任务
- 完成自选 50 道力扣题(页面勾选,会员题用免费替代)+ 牛客 10 道,记录错题
- 在本地 DuckDB 玩具库跑通至少 3 章示例
- 用 5 类脏数据练会过滤与 NULL 判断
- 学完窗口函数后做一次 30 分钟限时手写
验收标准(全勾才算过)
- 不看教程写出 SELECT … JOIN … GROUP BY … ORDER BY
- 能解释 JOIN 膨胀为什么把 GMV 算大
- 能默写连续登录的 gap-and-islands 模板
卡住了怎么办
常见卡点:复制粘贴:SQL 必须手打,否则面试写不出来
常见卡点:只刷题不猜结果:先预测行数和结果,再执行
SQL 工程化:建表与增删改
会写能落库的建表语句,能做增删改,理解事务和幂等写入。
这一阶段学什么
动手任务
- 为 orders 写一张带主键、非空和注释的建表语句
- 插入 3 条测试数据,再更新 1 条、删除 1 条
- 用 BEGIN/ROLLBACK 回滚一次错误修改
验收标准(全勾才算过)
- 能说清 DELETE、TRUNCATE、DROP 的区别与适用场景
- 能写出带约束的 CREATE TABLE 并解释每个约束的作用
- 知道什么操作需要事务,以及 Hive 为什么不支持行级更新
卡住了怎么办
常见卡点:UPDATE/DELETE 不写 WHERE:先 SELECT 验证范围再改
常见卡点:以为 TRUNCATE 能回滚:它通常会隐式提交
数仓建模
能画数仓分层、做维度建模、统一指标口径、设计质量检查。
这一阶段学什么
动手任务
- 手画 ODS→DWD→DWS→ADS 架构图
- 为 8 张源表画表关系与粒度说明
- 写 6 条质量检查 SQL 并说明异常怎么处理
- 为库存和订单履约各选一种事实表并说明粒度
验收标准(全勾才算过)
- 说清每一层为什么存在、允许依赖谁
- 能讲清拉链表的开链闭链和查询方式
- 能设计 GMV、AOV、复购率的口径并写出对应 SQL
- 能区分事务、周期快照、累积快照事实表并说出适用场景
卡住了怎么办
常见卡点:把分层背成名词:每层都要能说出“不做会怎样”
常见卡点:指标只写 SQL 不写口径:报表没人敢用
Hadoop 与 Spark 基础
先理解 HDFS/YARN/MapReduce 的定位,再在本地用 Spark 和 PySpark 跑通第一个清洗任务。
这一阶段学什么
动手任务
- 画出 HDFS、YARN、MapReduce 各自负责什么
- 跑通 Spark hello world 与 CSV 读取
- 用 PySpark 复算 GMV,与 DuckDB 结果一致
验收标准(全勾才算过)
- 能说清 HDFS 块、副本和 YARN 的角色
- 能说清 driver/executor、宽窄依赖、shuffle
- 能解释为什么 Spark 比 MapReduce 快
卡住了怎么办
常见卡点:先装集群再学概念:本地 Spark 足以理解 HDFS/YARN 的定位
常见卡点:Java 版本不对:统一 Java 17 + Spark 3.5.5,别混装
常见卡点:内存不足:本地模式先减小数据量,不要照搬集群参数
Hive 与离线调优
在本地 Spark 的 Hive 兼容模式上写分区表、进阶 SQL,并处理 shuffle 与数据倾斜。
这一阶段学什么
动手任务
- 写一张按天分区的外部表,并用动态分区写入
- 用 EXPLAIN 验证分区裁剪是否生效
- 准备 3 条数据倾斜的处理话术
验收标准(全勾才算过)
- 能讲清内部表与外部表、分区与分桶的区别
- 能写出 lateral view、collect_set 等 Hive 常用写法
- 面对“任务慢”能说出至少 2 种排查/优化方向
卡住了怎么办
常见卡点:分区字段和表字段重名:分区字段是目录,不是表内列
常见卡点:只会写 SQL 不看执行计划:用 EXPLAIN 对照 shuffle 和分区裁剪
实时、OLAP 与工程(加分)
先保调度能上手,再用概念覆盖 Kafka/Flink/OLAP 和容器化;找到实习后再深入。
这一阶段学什么
动手任务
- 配一个带依赖和重试的 DAG,说清每个任务的上下游
- 把项目改成按天分区 + 覆盖写,说明幂等方案
- 读 Kafka、Flink、ClickHouse 三章并各写 3 句总结
- 为一个 ETL 任务写出 Dockerfile,并用挂载卷运行一次
验收标准(全勾才算过)
- 能说清补数如何保证幂等
- 能回答 Kafka 为什么快、Flink 水位线是什么
- 能说出 OLAP 列存和行存的适用场景
- 能解释镜像、容器、卷的区别和容器内数据不持久的原因
卡住了怎么办
常见卡点:贪多:选学内容只要求讲得清,不要求装集群
常见卡点:把选学当必修:时间不够先保 SQL、数仓与项目
平台与数据服务(按目标选修)
补齐云数仓、NoSQL、dbt、画像、BI 与安全,按目标计划选择,不必全学。
这一阶段学什么
动手任务
- 选一个目标计划,勾出计划内和计划外的章节
- 用 DuckDB 建一张按日期分区的 Parquet 外部表
- 写出一个包含 3 个标签的画像宽表和一次位图圈人
- 给一张敏感表设计行级权限和脱敏视图
验收标准(全勾才算过)
- 能说清存储计算分离和按扫描量计费的成本控制
- 能区分 KV、宽表、文档、搜索四类 NoSQL 的适用场景
- 能用 ref、测试和增量模型描述一个 dbt 项目
- 能说清用户画像的长表/宽表、位图和 ID-Mapping
- 能列出 BI 服务的指标字典、缓存和行列权限做法
- 能说出数据分级、脱敏、审计和导出管控的至少三条要求
卡住了怎么办
常见卡点:把平台章节当必修:先按目标计划选,项目急用时只读对应章节
常见卡点:只看概念不动手:平台章节都有 DuckDB 或 Python 小练习,至少跑一遍
学习建议
一些让学习更有效的建议。
先读报错 → 查本页 FAQ → 自己试 20 分钟 → 看折叠答案 → 记进错题本。不要卡一整晚。
先保 SQL、数仓、项目;Kafka/Flink/OLAP/采集可以先读概念,不装环境。
验收清单勾完再往下,别用“看过了”代替“做过了”。
每完成一个阶段写 3 行:学会了什么、卡在哪、下一步补什么。