【資料工程】關於 Airbyte 的介紹、優缺點以及個人使用心得

  1. 什麼是 Airbyte?
  2. 為什麼要選擇 Airbyte?
  3. 關於 Airbyte 的優點
    1. 介面友善
    2. No-Code & 可重複使用的 connectors
    3. 內建 Connector 一鍵更新版本的功能
    4. 不讓 Schema Change 搞壞 Pipeline
  4. Airbyte 目前還是有些小缺點
    1. 無法管理 Secrets 和版本
    2. 開源版的 Airbyte 免費,但需要自架伺服器成本
    3. Metadata 增加儲存成本
    4. Connections 介面資訊不足
    5. 中文欄位名不支援
  5. 總結

什麼是 Airbyte?

在資料工程領域,最常見的工作內容就是處理 ETL/ELT Pipeline(Extract, Load & Transform),現在 ELT 架構比 ETL 更加普及,因為 ETL 會先將資料進行處理後才儲存,就犧牲了資料的彈性(如果後續想要的資料長不一樣會很麻煩),ELT 則是從資料來源先儲存 Raw data,之後有需要做任何處理和變更都會更方便。

Airbyte 是一個開源的資料整合工具,主要是用來建立 ELT Pipeline 中的 EL,也就是把數據從一個來源同步到另一個目的地做儲存,Airbyte 提供很多預先定義好的 Connectors,使用者只要輸入一些資訊就可以建立好一條完整的 EL Pipeline,近期我也花了不少時間研究並嘗試使用 Airbyte,這篇文章就記錄一些心得感想。

為什麼要選擇 Airbyte?

做 EL 的工具很多,就我所知市面上比較熱門的應該是 Fivetran,但 Fivetran 算是需要付費的工具,而且並沒有做開源,因此我覺得 Airbyte 在開源+免費的這部分很有優勢,截至撰文的此時(2024 年 6 月)GitHub 星數已經穩定上升到快 15K。

閱讀更多»

最新 Airflow 2.6 版本有哪些更新?簡介 Notifiers, Grid View, Trigger, CLI 等多項更新內容(附程式碼)

Airflow 在最近釋出了最新的 2.6 版本,Astronomer 也在第一時間舉辦了一個講座,這篇文章記錄我在講座中看到的各種 Airflow 新功能和新修正,講座影片我放在本文最後面的參考資料,若有興趣的話也可以看看!

這次 Airflow 2.6 版本的更新包含了:

  • 35+ 個新功能
  • 50+ 個功能改進
  • 27 個 Bug 修正

以下是本篇文章的大綱:

  1. Notifiers:更方便的 Pipeline 示警功能
    1. 內建 Slack notifier
  2. Continuous Timetable:可以讓 Sensor 持續運作的功能
    1. Continuous 使用範例
  3. 可用 CLI 來測試 Connections 和查看 DAG 詳細資訊
  4. 新增部分 Async 非同步設定,釋放你的 Airflow 壓力
  5. 修正 Task 卡在 Queue 狀態的問題
  6. UI 介面的更新
    1. Grid View 更新:與 Graph View 有了更佳的整合
    2. 更新 Trigger DAG with Parameters 功能:可直接帶入歷史參數設定
  7. Pandas Serializer for XCOM:讓 Task 可以直接回傳 Pandas DataFrame
  8. 其他更新
  9. 總結
  10. 參考資料

Notifiers:更方便的 Pipeline 示警功能

這次多了內建的 Notifier 可以用
主要是搭配 DAG/Task 的 on_success_callback 或是 on_failure_callback 來使用

我覺得把通知直接整合進 Airflow 是一個很重要的功能
因為如果 Pipeline 壞掉卻沒有收到通知,那個後果真的非常可怕
尤其是常常 Pipeline 之間會有相依性
一個壞掉若沒有提早修復,就會造成很恐怖的連鎖反應
(例如:Data Engineer 修到瘋掉)

內建 Slack notifier

目前只有 Slack 是可以直接內建使用的,後續版本應該是還會再新增
設定的程式碼可以參考以下:

https://github.com/astronomer/2-6-example-dags/blob/main/dags/notifier_slack.py

如果想要用其他的通知,就需要另外自定義
自定義的方式也可以參考他們寫的程式碼: 2-6-example-dags/dags/notifier_file_toy.py


閱讀更多»