Data Engineer Handbook 完整教學
1. 專案定位與核心價值
Data Engineer Handbook 是由 DataExpert.io 創辦人 Zach Wilson 主導的開源資料工程學習資源彙整專案,在 GitHub 上累積超過 41,900 顆星,是目前資料工程領域最大的社群驅動學習導覽。
核心價值定位
這個專案的價值不在於提供一套框架或工具,而在於解決資料工程學習者最常遇到的問題:「學什麼」與「怎麼學」的路線圖缺失。它扮演的角色是一個結構化的學習導航站(learning navigator),將分散在書籍、影片、社群、白皮書、面試資源中的知識,整理成一條可依循的學習路徑。
專案內容範圍
| 模組 | 內容說明 |
|---|---|
| Beginner Bootcamp | 4 週入門:SQL → Python → Data Modeling → Data Pipelines |
| Intermediate Bootcamp | 6 週中階:Dimensional Modeling → Fact Modeling → Spark → Flink → KPIs → Pipeline Maintenance |
| Books | 25+ 本精選書籍(含直接連結) |
| Companies | 12 類資料工程公司生態地圖 |
| Interviews | 4 類面試準備資源(DSA / SQL / Modeling / Architecture) |
| Whitepapers | 11 篇經典論文(Google File System、MapReduce、Lakehouse 等) |
| Communities | 10+ 社群(Discord / Slack) |
| Creators | 30+ YouTube 創作者名錄(含訂閱數) |
適合誰
- 想轉職資料工程的軟體工程師或資料分析師
- 準備 FAANG 級資料工程面試的求職者
- 想系統性了解資料工程產業生態的從業人員
- 帶團隊的技術主管(可作為 onboarding 參考資源)
2. 安裝與環境設定
基礎取得
1# 克隆 repo
2git clone https://github.com/dataexpert-io/data-engineer-handbook.git
3cd data-engineer-handbook
本專案是資源導覽型 repo,核心內容為 Markdown 文件,不需要額外安裝即可閱讀。但若要執行 bootcamp 的實作環境,需要以下工具:
Bootcamp 實作環境需求
| 工具 | 版本建議 | 用途 |
|---|---|---|
| Docker + Docker Compose | 最新穩定版 | PostgreSQL / Spark / Flink 容器環境 |
| Python | 3.9+ | Flink job / PySpark / 資料清洗範例 |
| Java | JDK 11+ | Apache Spark / Flink 底層依賴 |
| Make | 系統內建 | 各 bootcamp 材料的 Makefile 指令 |
中階 Bootcamp 環境設定
Week 1 — Dimensional Data Modeling(PostgreSQL)
1cd intermediate-bootcamp/materials/1-dimensional-data-modeling
2
3# 複製環境變數範本
4cp example.env .env
5
6# 啟動 PostgreSQL 容器 + 載入 data dump
7make up
8# 或 Windows:docker compose up
9
10# 連線到 PostgreSQL
11docker exec -it my-postgres-container bash
12psql -U postgres
Week 3 — Spark Fundamentals
1cd intermediate-bootcamp/materials/3-spark-fundamentals
2
3# 啟動 Spark + Iceberg + Jupyter 容器
4make up
5# 或 Windows:docker compose up
6
7# 存取 Jupyter Notebook
8# 瀏覽器開啟 http://localhost:8888
9
10# 安裝測試依賴
11pip install -r requirements.txt
12
13# 執行 PySpark 單元測試
14python -m pytest
Week 4 — Apache Flink + Kafka
1cd intermediate-bootcamp/materials/4-apache-flink-training
2
3# 複製環境變數範本
4cp example.env .env
5
6# 啟動 Flink + Kafka + PostgreSQL 容器
7make up
8
9# 提交 Flink job
10docker-compose exec jobmanager ./bin/flink run \
11 -py /opt/src/job/start_job.py -d
12
13# 查看 PostgreSQL 結果
14docker exec -it eczachly-flink-postgres \
15 psql -U postgres -d postgres
3. 核心架構解析
專案結構總覽
Data Engineer Handbook 的架構反映了資料工程學習的層次結構:從導覽層(README + 資源清單)→ 實作層(Bootcamp 材料)→ 執行環境(Docker 容器)。
graph TD
subgraph "導覽層 Navigation"
README["README.md
學習路線圖入口"]
BOOKS["books.md
25+ 書籍"]
INTERVIEWS["interviews.md
4 類面試"]
PROJECTS["projects.md
實作專案"]
COMMUNITIES["communities.md
10+ 社群"]
NEWSLETTERS["newsletters.md
電子報"]
end
subgraph "實作層 Bootcamp Materials"
BEGINNER["beginner-bootcamp/
4 週入門"]
INTERMEDIATE["intermediate-bootcamp/
6 週中階"]
end
subgraph "中階六模組"
DIM["1-dimensional-data-modeling
PostgreSQL + SQL"]
FACT["2-fact-data-modeling
進階建模"]
SPARK["3-spark-fundamentals
PySpark + Iceberg"]
FLINK["4-apache-flink-training
Flink + Kafka"]
ANALYTICS["4-applying-analytical-patterns
+ 5-kpis-and-experimentation"]
PIPELINE["6-data-pipeline-maintenance
+ 6-data-impact-training"]
end
subgraph "執行環境 Docker"
PG["PostgreSQL Container"]
SPARK_C["Spark + Iceberg + Jupyter"]
FLINK_C["Flink + Kafka + PostgreSQL"]
end
README --> BOOKS
README --> INTERVIEWS
README --> PROJECTS
README --> COMMUNITIES
README --> NEWSLETTERS
README --> BEGINNER
README --> INTERMEDIATE
INTERMEDIATE --> DIM
INTERMEDIATE --> FACT
INTERMEDIATE --> SPARK
INTERMEDIATE --> FLINK
INTERMEDIATE --> ANALYTICS
INTERMEDIATE --> PIPELINE
DIM --> PG
SPARK --> SPARK_C
FLINK --> FLINK_C
資源分類架構
README 中列出的公司與工具,按資料工程 pipeline 的不同階段分為 12 類:
| 階段 | 分類 | 代表工具 |
|---|---|---|
| 資料擷取 | Data Integration | Fivetran, Airbyte, dlt, Sling, Meltano |
| 排程調度 | Orchestration | Airflow, Dagster, Prefect, Mage, Kestra |
| 資料儲存 | Data Lake / Cloud | Databricks, Delta Lake, Apache Iceberg, DuckLake |
| 資料倉儲 | Data Warehouse | Snowflake, Firebolt, Databend |
| 資料品質 | Data Quality | dbt, Great Expectations, Soda, DQOps |
| 即時處理 | Real-Time Data | RisingWave, Striim, Responsive |
| 分析引擎 | Modern OLAP | ClickHouse, DuckDB, Apache Druid, StarRocks |
| 語意層 | Semantic Layer | Cube, dbt Semantic Layer |
| 視覺化 | Analytics / Visualization | Tableau, Power BI, Metabase, Superset |
| LLM 應用 | LLM Libraries | LangChain, LlamaIndex, AdalFlow |
| 資料血統 | Data Lineage | OpenLineage |
| 教育訓練 | Education | DataExpert.io, ByteByteGo |
Bootcamp 學習路線
中階 bootcamp 的 6 週課程設計遵循「建模 → 運算 → 分析 → 維運」的漸進邏輯:
graph LR
W1["Week 1-2
Data Modeling
PostgreSQL"]
W3["Week 3
Spark Fundamentals
PySpark + Iceberg"]
W4["Week 4
Flink + Kafka
即時串流"]
W5["Week 5
KPIs &
Experimentation"]
W6["Week 6
Pipeline
Maintenance"]
W1 -->|"建模基礎"| W3
W3 -->|"批次處理"| W4
W4 -->|"即時處理"| W5
W5 -->|"分析應用"| W6
style W1 fill:#4a90d9,color:#fff
style W3 fill:#e8853d,color:#fff
style W4 fill:#50c878,color:#fff
style W5 fill:#9b59b6,color:#fff
style W6 fill:#e74c3c,color:#fff
4. 主要功能詳解
4.1 Beginner Bootcamp(4 週入門)
入門課程以 4 週為單位,涵蓋資料工程基礎四大支柱:
- SQL:基礎查詢到進階(homework coming soon)
- Python:資料處理基礎(homework coming soon)
- Data Modeling:表結構設計(homework coming soon)
- Data Pipelines:管線建構基礎(homework coming soon)
注意:入門版目前大多標註 “coming soon”,主要教學內容需前往 DataExpert.io 平台觀看影片。
4.2 Intermediate Bootcamp(6 週中階)
中階課程是本 repo 最有價值的部分,每週含完整的 lecture + lab + homework,且提供可直接啟動的 Docker 環境。
Week 1-2:Dimensional & Fact Data Modeling
- Dimensional Modeling(3 天):學習 Kimball 維度建模方法論,包含 SCD(Slowly Changing Dimensions)、Star Schema、Snowflake Schema
- Fact Modeling(3 天):事實表設計、Grain 定義、Aggregate Fact Table
- 環境:PostgreSQL + data.dump 預載資料
- Homework:提供完整 SQL 作業題目
Week 3:Apache Spark Fundamentals
- PySpark + Iceberg:使用 Docker 容器化 Spark 環境,搭配 Apache Iceberg 做 table format 實驗
- Jupyter Notebook:互動式學習,附 event_data_pyspark.ipynb
- 單元測試:使用 pytest 撰寫 PySpark 測試
- 常見問題:含 OutOfMemoryError 修復指南
Week 4:Apache Flink + Kafka
- 即時串流處理:Flink SQL + Kafka 整合,實作 web traffic 即時分析
- 兩種 Job:
start_job.py:接收 Kafka 訊息 → IP 地理定位 → 寫入 PostgreSQLaggregation_job.py:聚合分析 → 視窗函數 → 結果寫入
- 環境:完整 Docker Compose(Flink JobManager + TaskManager + Kafka + PostgreSQL)
Week 5:KPIs & Experimentation
- A/B Testing 框架:使用 Statsig API 實作實驗分析
- Python Server:範例 Flask server 整合 Statsig SDK
Week 6:Data Pipeline Maintenance & Data Impact
- Pipeline 維運:含 Runbook 範本(PDF)
- Data Visualization:資料影響力分析與視覺化
4.3 書籍推薦清單
收錄 35 本資料工程書籍,分類涵蓋:
- 基礎理論:Fundamentals of Data Engineering、Designing Data-Intensive Applications
- Apache Spark:High Performance Spark、Learning Spark(2nd Ed)、Spark: The Definitive Guide
- Streaming:Stream Processing with Apache Flink、Streaming Systems
- Table Format:Delta Lake / Apache Iceberg: The Definitive Guide
- ML 系統:Designing Machine Learning Systems、MLSD Interview
- Data Governance:Data Governance: The Definitive Guide、Data Mesh
- 工具導向:dbt、Snowflake、Trino、Hadoop、AWS
4.4 面試準備資源
四大面試類型的完整學習路線:
| 面試類型 | 核心資源 |
|---|---|
| DSA(演算法) | DataExpert.io 影片 + blog |
| SQL | DataExpert.io 影片 + 50+ 免費練習題 + DataLemur 100+ 題 |
| Data Modeling | DataExpert.io 影片 + blog |
| Data Architecture | DataExpert.io 影片 + blog |
4.5 白皮書精選
11 篇經典與前沿論文,按主題分類:
- 分散式系統:Google File System、MapReduce、Spark
- 資料架構:Lakehouse(CIDR 2021)、Five-Layered BI Architecture
- Table Format:XTable in Action(Iceberg 互通)
- 資料品質:Big Data Quality Profiling、Tidy Data
5. 應用場景與實戰範例
場景 1:新手資料工程師自學路線
1第 1 個月:
2 1. 閱讀 Fundamentals of Data Engineering(books.md 第一本)
3 2. 完成 Beginner Bootcamp SQL + Python
4 3. 加入 DataExpert.io Discord 社群
5
6第 2 個月:
7 1. 啟動 Dimensional Modeling Docker 環境,完成 Week 1-2 homework
8 2. 閱讀 Designing Data-Intensive Applications(books.md 第二本)
9
10第 3 個月:
11 1. 完成 Spark Fundamentals + Flink 實作
12 2. 動手做 projects.md 中的 End-to-end Uber project
13 3. 開始準備面試(interviews.md 四大類型)
場景 2:團隊 Onboarding 材料
技術主管可利用本 repo 建立新進工程師的 onboarding checklist:
1# Data Engineering Onboarding Checklist
2
3## Week 1: Foundations
4- [ ] 閱讀 README.md 掌握產業生態
5- [ ] 加入 communities.md 推薦社群
6- [ ] 完成 Dimensional Modeling Day 1 Lecture + Lab
7
8## Week 2: Hands-on
9- [ ] 啟動 PostgreSQL Docker 環境
10- [ ] 完成 Dimensional Modeling homework
11- [ ] 閱讀 2 篇 whitepapers(Lakehouse + Google File System)
12
13## Week 3-4: Specialization
14- [ ] 選擇 Spark 或 Flink 路線完成實作
15- [ ] 閱讀團隊使用的工具對應章節(dbt / Airflow / etc.)
場景 3:面試準備密集衝刺
1Week 1: SQL 面試
2 - 完成 DataExpert.io SQL 影片課程
3 - 刷 DataLemur 100+ 題
4 - 練習 50+ Data Lake SQL 題
5
6Week 2: Data Modeling 面試
7 - 完成 Data Modeling 影片
8 - 用 bootcamp 環境練習設計 Star Schema
9
10Week 3: Architecture 面試
11 - 閱讀 whitepapers:Lakehouse + XTable
12 - 複習 companies 清單的分類邏輯
13
14Week 4: 模擬面試
15 - 加入 DataExpert.io Discord 找練習夥伴
場景 4:Flink 即時串流實作
以 Week 4 Flink bootcamp 材料為基礎,實作 web traffic 即時分析 pipeline:
1# 簡化版 start_job.py 架構說明
2# 1. 讀取 Kafka web traffic 事件
3# 2. UDF 做 IP → 地理位置轉換
4# 3. 視窗聚合(tumbling window)
5# 4. 結果寫入 PostgreSQL sink
6
7# 環境變數設定
8# KAFKA_WEB_TRAFFIC_KEY / KAFKA_WEB_TRAFFIC_SECRET
9# POSTGRES_PASSWORD
6. 資安掃描報告
掃描範圍
對 repo 全部 .py、.js、.ts、.sh、.md 檔案掃描常見安全模式(eval、exec、subprocess、API key、password、secret 等)。
掃描結果:🟢 Low Risk
| 類別 | 發現數 | 風險等級 | 說明 |
|---|---|---|---|
os.environ.get() 取得機密 | 5 處 | 🟢 低 | Kafka / PostgreSQL / Statsig 密鑰從環境變數讀取,做法正確 |
eval() 方法 | 1 處 | 🟢 低 | Flink UDF 的 eval() 方法,非 Python 原生 eval,是 Flink 標準用法 |
execute_sql() | 8 處 | 🟢 低 | Flink SQL DDL 執行,無使用者輸入拼接,無 SQL injection 風險 |
docker exec | 3 處 | 🟢 低 | 文件中的 Docker 操作指令,非程式碼執行 |
| 預設密碼 | 2 處 | 🟡 低-中 | PostgreSQL 預設密碼 “postgres”,但僅用於本機 Docker 開發環境 |
API_KEY 變數 | 1 處 | 🟢 低 | Statsig API key 從環境變數讀取,未硬編碼 |
example.env 範本 | 2 處 | 🟢 低 | 環境變數範本檔,不含真實密鑰 |
安全建議
- 預設密碼:PostgreSQL 使用 “postgres” 作為預設密碼,僅適用於本機開發,上線環境務必更換
- 環境變數管理:所有機密值均透過
os.environ.get()讀取,已遵循最佳實踐 - 無可執行的惡意程式碼:所有
exec/eval均為合法 Docker CLI 指令或 Flink API 呼叫
結論:本 repo 以教學材料為主,程式碼僅用於本機 Docker 環境學習,安全風險極低。
7. FAQ 常見問題
Q1:這個 repo 和 DataExpert.io 平台的關係?
A:Data Engineer Handbook 是 DataExpert.io 的開源學習路線圖。Bootcamp 的影片教學需在 DataExpert.io 平台觀看(免費),但所有 homework、Docker 環境、SQL 練習題都在 repo 內。
Q2:入門者應該從哪裡開始?
A:
- 先讀 README 的 “Getting started” 段落
- 依個人程度選擇 beginner(4 週)或 intermediate(6 週)bootcamp
- 搭配 books.md 前三本書同步閱讀
Q3:Spark OutOfMemoryError 怎麼解決?
A:這是最常見的問題之一。官方提供了 Discord 解決方案連結。一般做法是調整 Docker 容器的記憶體限制:
1# docker-compose.yaml
2services:
3 spark:
4 deploy:
5 resources:
6 limits:
7 memory: 4g
Q4:沒有 Docker 能做嗎?
A:純資源導覽(書籍、社群、面試)不需要 Docker。但 bootcamp 實作環境(PostgreSQL、Spark、Flink)強烈建議使用 Docker,否則需手動安裝 JDK + Spark + Flink,步驟繁瑣且版本容易衝突。
Q5:這個 repo 多久更新一次?
A:社群貢獻驅動,不定期更新。最近一次提交為 2026-04-02(新增 Python fundamentals 教材)。核心內容(書籍清單、公司列表)約每季更新。
Q6:我可以貢獻什麼?
A:常見貢獻類型:
- 新增書籍 / YouTube 創作者 / 社群連結
- 修正過期連結
- 新增公司到生態地圖
- 翻譯 README 到其他語言
8. 進階技巧
8.1 利用白皮書建立深度知識
推薦閱讀順序:
1Level 1(基礎分散式系統):
2 → Google File System → MapReduce → Spark
3
4Level 2(資料架構演進):
5 → Five-Layered BI Architecture → Lakehouse (CIDR 2021)
6
7Level 3(現代 Table Format):
8 → The Data Lakehouse (arXiv) → XTable in Action → Building a Universal Data Lakehouse
8.2 打造個人化學習 Dashboard
利用 repo 的結構化資源,搭配工具建立學習追蹤:
1# 個人學習 Dashboard
2
3## 進度追蹤
4| 模組 | 狀態 | 筆記連結 |
5|------|------|----------|
6| books.md #1 FDE | ✅ 完成 | notes/fde.md |
7| books.md #2 DDIA | 🔄 進行中 Ch.7 | notes/ddia.md |
8| Week 1 Dim Modeling | ✅ 完成 | notes/dim-model.md |
9| Week 3 Spark | ⬜ 未開始 | - |
10
11## 面試準備
12| 類型 | 刷題數 | 目標 |
13|------|--------|------|
14| SQL | 35/100 | DataLemur 全做 |
15| DSA | 10/50 | 中等難度 |
8.3 結合 Flink Bootcamp 與實際專案
Week 4 的 Flink + Kafka 環境可以直接擴展為真實專案:
- 修改
start_job.py的 Kafka source,接入實際資料流 - 新增自定義 UDF 做資料轉換
- 修改 PostgreSQL sink 改為 Iceberg table(結合 Week 3)
- 新增 Grafana dashboard 監控 pipeline 健康度
8.4 善用 YouTube 創作者名錄
README 中列出 30+ 創作者,建議按專長分類追蹤:
| 專長領域 | 推薦創作者 |
|---|---|
| 資料建模 | Zach Wilson (Data with Zach) |
| 系統設計 | ByteByteGo |
| Spark / Databricks | Emil Kaminski |
| 資料視覺化 | Data with Baraa |
| SQL 面試 | TECHTFQ, Ankit Bansal |
| 通用資料工程 | Seattle Data Guy, Andreas Kretz |
9. 整合進其他工作流
9.1 作為團隊知識庫的起點
1# Fork 後客製化為團隊版本
2gh repo fork dataexpert-io/data-engineer-handbook --clone
3cd data-engineer-handbook
4
5# 新增團隊專屬資源
6mkdir team-resources
7# 加入公司內部 data catalog、DAG 列表、coding standards
9.2 搭配 dbt 學習路線
本 repo 列出 dbt 作為 Data Quality 工具,可搭配以下路線深化:
- 閱讀 “Data Engineering with dbt”(books.md)
- 完成 Dimensional Modeling bootcamp 建立 SQL 基礎
- 在本機 PostgreSQL 環境中安裝 dbt-postgres
- 將 bootcamp homework 改寫為 dbt models
9.3 搭配 paper-search 做白皮書深讀
利用 AI-Knowledge Template 的 paper-search 技能,可以對 repo 收錄的 11 篇白皮書進行深度閱讀:
1paper read: doi:10.48550/arXiv.2310.08697 # The Data Lakehouse
2paper read: doi:10.48550/arXiv.2401.09621 # XTable in Action
9.4 搭配 Airflow / Dagster 實作
repo 的 Orchestration 分類列出了主要排程工具,可以延伸實作:
- 用 Astronomer(Airflow 託管)或 Dagster Cloud 建立免費帳號
- 將 bootcamp 的 Spark / Flink job 包裝成 DAG
- 加入 dbt run 作為 transformation step
- 設定 Great Expectations 作為 data quality gate
10. 重點摘要 Checklist
- 定位理解:Data Engineer Handbook 是學習路線圖,不是框架
- 書籍三必讀:Fundamentals of Data Engineering、DDIA、Designing ML Systems
- Bootcamp 環境:需要 Docker + Python 3.9+ + JDK 11+
- 中階六週:建模(2 週) → Spark → Flink → KPI → Pipeline
- Docker 優先:所有實作環境都透過 Docker Compose 一鍵啟動
- 面試四類:DSA / SQL / Data Modeling / Data Architecture
- 白皮書:從 GFS → MapReduce → Spark → Lakehouse 循序閱讀
- 安全性:🟢 低風險,所有機密透過環境變數管理
- 社群參與:加入 DataExpert.io Discord(最活躍社群)
- 持續追蹤:follow repo 的 Watch,留意社群貢獻更新
- 生態地圖:README 的 Companies 段落是了解產業全貌的最快途徑
- 實作延伸:Flink bootcamp 環境可直接擴展為真實 streaming pipeline
11. 進一步閱讀與參考資源
官方資源
- GitHub Repo:dataexpert-io/data-engineer-handbook
- DataExpert.io 平台:dataexpert.io(免費 bootcamp 影片)
- Zach Wilson Blog:blog.dataengineer.io
推薦搭配資源
| 資源 | 說明 |
|---|---|
| DataExpert.io Discord | 最活躍的資料工程學習社群 |
| Data Talks Club Slack | 另一個大型 DE 社群 |
| DataLemur | 100+ SQL 面試題 |
| DEDP Online | Data Engineering Design Patterns 線上版 |
延伸學習路線
| 主題 | 書籍 | 實作 |
|---|---|---|
| Apache Iceberg | Apache Iceberg: The Definitive Guide | Week 3 Spark + Iceberg 環境 |
| Streaming | Stream Processing with Apache Flink | Week 4 Flink bootcamp |
| Data Mesh | Data Mesh (O’Reilly) | - |
| dbt | Data Engineering with dbt | bootcamp PostgreSQL + dbt-postgres |
| 面試 | MLSD Interview | DataLemur + DataExpert.io |
Comments