Data Engineer Handbook 完整教學

1. 專案定位與核心價值

Data Engineer Handbook 是由 DataExpert.io 創辦人 Zach Wilson 主導的開源資料工程學習資源彙整專案,在 GitHub 上累積超過 41,900 顆星,是目前資料工程領域最大的社群驅動學習導覽。

核心價值定位

這個專案的價值不在於提供一套框架或工具,而在於解決資料工程學習者最常遇到的問題:「學什麼」與「怎麼學」的路線圖缺失。它扮演的角色是一個結構化的學習導航站(learning navigator),將分散在書籍、影片、社群、白皮書、面試資源中的知識,整理成一條可依循的學習路徑。

專案內容範圍

模組內容說明
Beginner Bootcamp4 週入門:SQL → Python → Data Modeling → Data Pipelines
Intermediate Bootcamp6 週中階:Dimensional Modeling → Fact Modeling → Spark → Flink → KPIs → Pipeline Maintenance
Books25+ 本精選書籍(含直接連結)
Companies12 類資料工程公司生態地圖
Interviews4 類面試準備資源(DSA / SQL / Modeling / Architecture)
Whitepapers11 篇經典論文(Google File System、MapReduce、Lakehouse 等)
Communities10+ 社群(Discord / Slack)
Creators30+ 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 容器環境
Python3.9+Flink job / PySpark / 資料清洗範例
JavaJDK 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
 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 IntegrationFivetran, Airbyte, dlt, Sling, Meltano
排程調度OrchestrationAirflow, Dagster, Prefect, Mage, Kestra
資料儲存Data Lake / CloudDatabricks, Delta Lake, Apache Iceberg, DuckLake
資料倉儲Data WarehouseSnowflake, Firebolt, Databend
資料品質Data Qualitydbt, Great Expectations, Soda, DQOps
即時處理Real-Time DataRisingWave, Striim, Responsive
分析引擎Modern OLAPClickHouse, DuckDB, Apache Druid, StarRocks
語意層Semantic LayerCube, dbt Semantic Layer
視覺化Analytics / VisualizationTableau, Power BI, Metabase, Superset
LLM 應用LLM LibrariesLangChain, LlamaIndex, AdalFlow
資料血統Data LineageOpenLineage
教育訓練EducationDataExpert.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 週為單位,涵蓋資料工程基礎四大支柱:

  1. SQL:基礎查詢到進階(homework coming soon)
  2. Python:資料處理基礎(homework coming soon)
  3. Data Modeling:表結構設計(homework coming soon)
  4. 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 修復指南
  • 即時串流處理:Flink SQL + Kafka 整合,實作 web traffic 即時分析
  • 兩種 Job
    • start_job.py:接收 Kafka 訊息 → IP 地理定位 → 寫入 PostgreSQL
    • aggregation_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
SQLDataExpert.io 影片 + 50+ 免費練習題 + DataLemur 100+ 題
Data ModelingDataExpert.io 影片 + blog
Data ArchitectureDataExpert.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 找練習夥伴

以 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 exec3 處🟢 低文件中的 Docker 操作指令,非程式碼執行
預設密碼2 處🟡 低-中PostgreSQL 預設密碼 “postgres”,但僅用於本機 Docker 開發環境
API_KEY 變數1 處🟢 低Statsig API key 從環境變數讀取,未硬編碼
example.env 範本2 處🟢 低環境變數範本檔,不含真實密鑰

安全建議

  1. 預設密碼:PostgreSQL 使用 “postgres” 作為預設密碼,僅適用於本機開發,上線環境務必更換
  2. 環境變數管理:所有機密值均透過 os.environ.get() 讀取,已遵循最佳實踐
  3. 無可執行的惡意程式碼:所有 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:

  1. 先讀 README 的 “Getting started” 段落
  2. 依個人程度選擇 beginner(4 週)或 intermediate(6 週)bootcamp
  3. 搭配 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 | 中等難度 |

Week 4 的 Flink + Kafka 環境可以直接擴展為真實專案:

  1. 修改 start_job.py 的 Kafka source,接入實際資料流
  2. 新增自定義 UDF 做資料轉換
  3. 修改 PostgreSQL sink 改為 Iceberg table(結合 Week 3)
  4. 新增 Grafana dashboard 監控 pipeline 健康度

8.4 善用 YouTube 創作者名錄

README 中列出 30+ 創作者,建議按專長分類追蹤:

專長領域推薦創作者
資料建模Zach Wilson (Data with Zach)
系統設計ByteByteGo
Spark / DatabricksEmil 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 工具,可搭配以下路線深化:

  1. 閱讀 “Data Engineering with dbt”(books.md)
  2. 完成 Dimensional Modeling bootcamp 建立 SQL 基礎
  3. 在本機 PostgreSQL 環境中安裝 dbt-postgres
  4. 將 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 分類列出了主要排程工具,可以延伸實作:

  1. 用 Astronomer(Airflow 託管)或 Dagster Cloud 建立免費帳號
  2. 將 bootcamp 的 Spark / Flink job 包裝成 DAG
  3. 加入 dbt run 作為 transformation step
  4. 設定 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. 進一步閱讀與參考資源

官方資源

推薦搭配資源

資源說明
DataExpert.io Discord最活躍的資料工程學習社群
Data Talks Club Slack另一個大型 DE 社群
DataLemur100+ SQL 面試題
DEDP OnlineData Engineering Design Patterns 線上版

延伸學習路線

主題書籍實作
Apache IcebergApache Iceberg: The Definitive GuideWeek 3 Spark + Iceberg 環境
StreamingStream Processing with Apache FlinkWeek 4 Flink bootcamp
Data MeshData Mesh (O’Reilly)-
dbtData Engineering with dbtbootcamp PostgreSQL + dbt-postgres
面試MLSD InterviewDataLemur + DataExpert.io

經典白皮書快速連結

  1. Lakehouse: A New Generation of Open Platforms
  2. The Google File System
  3. MapReduce: Simplified Data Processing on Large Clusters
  4. Spark: Cluster Computing with Working Sets
  5. XTable in Action: Seamless Interoperability in Data Lakes
  6. Tidy Data