CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
数据工程师入门/课时/数据采集与 ETL
RawBlame
课时目录12 节

数据工程师入门

  1. 01数据工程是什么
  2. 02基础技能
  3. 03Python 与 SQL
  4. 04存储与数仓
  5. 05数据采集与 ETL
  6. 06编排工具
  7. 07大数据组件
  8. 08数据建模
  9. 09质量与安全
  10. 10云平台与对象存储
  11. 11流处理与 Reverse ETL
  12. 12综合练习

数据采集与 ETL

extract/transform/load、批处理模式。

40 分钟

数据采集与 ETL

ETL(Extract → Transform → Load)是批处理数据管道的经典模式;现代栈也常写 ELT(先加载到数仓再 SQL 转换)。本课建立批处理采集的设计直觉。

学习目标

  • 理解 Extract / Transform / Load 各阶段职责
  • 掌握全量、增量、快照等批处理模式
  • 能设计一个从 MySQL 到 staging 表的日常任务

ETL 三阶段

Extract   — 从源系统读(JDBC、API、文件、日志)
Transform — 清洗、类型统一、去重、业务规则
Load      — 写入 staging / warehouse / mart
阶段常见坑
Extract源库压力大、漏增量水位
Transform时区、NULL、重复键
Load非幂等重跑导致重复行

幂等是批处理第一原则:同一 DAG 跑两次,结果应与跑一次一致(MERGE / DELETE+INSERT 分区)。

批处理模式

模式适用示例
全量刷新小维表每日覆盖 dim_track
增量追加大事实表WHERE updated_at >= yesterday
快照历史对比每日用户余额快照
拉链表缓慢变化课程价格历史(见 de-modeling)

Extract 实现方式

# 伪代码:JDBC 增量拉取
watermark = get_last_run("tracks_etl")
df = pd.read_sql(
    "SELECT * FROM cf_track WHERE updated_at > %s",
    conn, params=[watermark]
)
load_to_staging(df, "stg_tracks")
set_last_run("tracks_etl", max(df.updated_at))

生产环境常用 Airflow Operator 或 Fivetran/Airbyte 托管;本站练习可 Python + cron,编排见下一课。

Transform 放在哪

策略优点工具
ETL(管道内 Python/Spark)源端减压pandas, Spark
ELT(数仓内 SQL)利用数仓算力dbt, 原生 SQL

CodeRoadMap 规模下 ELT + dbt 足够;海量日志再考虑 Spark。

与路线图的关系

  • /roadmaps/data-engineer — ETL / Batch 节点
  • de-orchestration — 调度 Airflow
  • /tracks/sql-essentials — Load 后的 SQL 转换
  • 练习

    • 为 cf_track 设计增量 ETL:列出 Extract SQL 与 staging 表字段
    • 说明任务失败重跑时如何避免重复数据
    • 对比 ETL 与 ELT,各写一条适用场景

    小结

    Extract 要轻、Transform 要准、Load 要幂等;批处理是数仓的主粮。 下一课用 Airflow/dbt 编排这些步骤。

    加载本节练习…
    ← 上一课存储与数仓下一课 →编排工具