Gatekeep Iceberg 數據品質與 Apache Toree、Airflow 整合

數據品質重要性與案例

數據品質問題的影響類似於程式碼品質問題,可能導致開發者負擔增加、系統異常,甚至生產環境失敗。數據品質問題更難檢測與修復,且常因數據來源多樣性、Schema變更、語義層面歧義等因素產生。例如,1999 年 NASA 火星探測器因單位換算錯誤(國際公制 vs 美國慣用單位)導致 1.25 億美元損失,強調數據品質檢查的必要性。

Iceberg 數據品質機制

Iceberg 提供 WAP(Write-Audit-Publish)流程確保數據品質:

  1. Write:寫入數據至 Iceberg 表格,支持 Parquet 等格式。
  2. Audit:生成元數據(metadata),包含列統計資訊(如平均值、最大值、新值比例、極值範圍等),用於查詢優化與品質檢查。
  3. Publish:驗證數據品質後發布快照(snapshot),確保數據可見性。

元數據指標應用包括:

  • Distinct Value Count:衡量數據維度,如樹種 ID 的唯一值數量。
  • New Value Fraction:新值比例,用於檢測異常(如 5% 新值可能代表數據錯誤)。
  • Lower/Upper Bounds:數值列的極值範圍,避免超出預期範疇的數據。

Toree 與數據探索

Apache Toree 作為 Jupyter Notebook 的執行核心,支援 Scala 與 Apache Spark 結合,提供互動式數據探索環境。其功能整合包括:

  • 數據探查:透過 Notebook 進行數據視覺化、分佈分析與異常檢測。
  • Spark 集成:利用 Spark 的平行處理能力處理大規模數據集,支援 SQL、DataFrame 等操作。
  • 開發與生產化:開發階段的 Notebook 可直接轉換為自動化檢查流程,應用於即時或定期任務。

Airflow 數據品質檢查自動化

Apache Airflow 透過 Sensor 與 Operator 類別實現數據品質檢查自動化:

  • Sensor 類別:使用 Partition Sensor 或 Signal Sensor 監控數據流入狀態。
  • Operator 類別
    • PySpark/Scala Operator:執行數據品質檢查(如缺失值、重複數據、越界值檢測)。
    • Jupyter Notebook Operator:調用預先開發的 Notebook 進行複雜分析。
    • Data Quality Operator:自定義檢查邏輯(如驗證樹種名稱一致性)。
  • Publish 階段:通過元數據操作發布快照,無需修改數據文件。

異常處理機制包括:

  • 暫停與調查:在檢查失敗時暫停流程,人工介入分析問題。
  • 靈活處理策略:根據需求選擇刪除異常數據或保留原始數據。
  • 並行處理:部分檢查失敗時,其他讀取操作可繼續執行。

數據血緣與追蹤

即使通過品質檢查,仍需追蹤數據來源、修改時間與修改位置,以定位未預期的異常。實現方式結合 Iceberg 的快照歷史與 Airflow 的任務日誌,建立完整的數據血緣圖譜。

技術整合與挑戰

  • Iceberg 分支與標籤:支援版本控制,但合併時需處理衝突(如更新或刪除操作)。
  • 生產化考量:需平衡檢查嚴謹性與處理效率,避免過度消耗資源。

自動化排程與數據品質檢查

使用 Apache Airflow 進行任務自動化排程,支援每小時或按需執行。數據品質檢查範疇包含:

  • 缺失值(Missing Data)
  • 異常值(Out-of-bound Data)
  • 重複數據(Duplication)
  • 非法數據(Impartial Data)
  • 過時數據(Stale Data)
  • 源頭異常(Anomaly in Source)

支援自訂檢查邏輯,透過 Airflow Operator 實現特定檢查需求。

Toree 與 Airflow 結合應用

利用 Apache Toree 結合 Jupyter Notebook 作為數據檢查元件,開發階段與生產階段共用 Notebook 進行數據驗證。支援 Papermill Operator 進行 Notebook 排程與執行,結合 PySpark/Scala Operator 執行數據處理與驗證。多階段檢查流程包括:

  1. 資料寫入前:使用 Partition Sensor/Signal Sensor 識別即將到達的資料
  2. 資料處理中:執行 PySpark/Scala Operator 進行 audits
  3. 資料發布後:觸發通知機制(如 On-call 通知)標記異常

數據血緣與問題追蹤

強調需建立數據血緣(Data Lineage)追蹤機制,跟蹤數據來源、修改時間、修改位置等元數據,用於識別未被現有檢查機制捕獲的異常,支援整合至數據品質檢查流程,作為問題診斷依據。

技術整合架構

  • Airflow 核心功能:任務排程(Scheduling)、依賴管理(Dependency Management)、狀態監控(Status Monitoring)
  • Toree 結合 Jupyter Notebook:開發與驗證環境整合、支援 Python/Scala 編碼執行、自動化測試腳本執行
  • 操作符類型:Data Quality Operator(自訂檢查邏輯)、Jupyter Notebook Operator(執行驗證腳本)、PySpark/Scala Operator(資料處理)、Sensor Operator(資料觸發監控)

系統設計考量

支援多階段檢查策略:

  • 預處理檢查(Pre-processing Checks)
  • 實時檢查(Real-time Checks)
  • 事後檢查(Post-processing Checks)

異常處理機制:

  • 自動修正(Automated Correction)
  • 人工介入(Manual Intervention)
  • 通知機制(Notification System)

持續改進方向:

  • 增強異常檢測準確率
  • 優化檢查流程效率
  • 完善數據血緣追蹤功能