iT邦幫忙

2023 iThome 鐵人賽

DAY 5
1

Workflow before Airflow

討論 Airflow 前,先問問大家有聽過 Workflow 嗎?可以翻作工作流,在資料領域,也可以稱作 Dataflow (資料流),通常就是一連串的 Data Engineering (資料工程)的行為相互連接。
什麼? Data Engineering 是什麼?好多名詞ㄚㄚㄚㄚ?/images/emoticon/emoticon06.gif
其實這些通通都忘記也沒關係,就像是大學修課都會有「xxxx導論/概論」,都只是一些背景知識,忘記也可以,以後一邊實作就會慢慢想起來了。


好的,切回正題,Data Engineering 就是任何與數據有關的行為,可能是收集數據、設計數據架構、儲存數據、分析數據等等,不限任何工具,所以就算一行程式也沒寫,用手寫統計、計算機加總、Excel整理,這些都可以稱作 Data Engineering (資料工程),常常聽到的 ETL ,extract 擷取資料、transform 轉換資料、load 載入資料,都是 Data Engineering 其中一部份。那 Workflow 勒,Workflow 工作流就是把剛剛提到的各種和資料處理的行為串在一起。
讓資料~流動起來~/images/emoticon/emoticon37.gif

https://ithelp.ithome.com.tw/upload/images/20230920/20135427CQywQPWMrh.png

Airflow 到底是什麼?

Airflow 就是一個可以用程式創建 Workflow 的開源 (open-source) 平台工具,可以創建、排程、監控多個不同的 Workflow,並在 Airflow 的網頁工具 (Web UI) 查看,方便處理複雜的工作流程,除此之外,Airflow 還有以下優點:

  • 全程使用 Python,不用另外學工具的程式語言
  • 可擴展性高,從小型工作流到處理幾百條工作流都能勝任
  • 可和大多數的軟體和資料庫整合
  • 社群活躍,討論度高,並持續更新中

https://ithelp.ithome.com.tw/upload/images/20230920/20135427l9sdfPdQPQ.png
Ref: airflow 官方文件

像是這個 Airflow 官網的範例,我們可以設定各項任務之間的順序,先執行 run_this_first 再執行 branching ,接著排程分開完成 branch_abranch_b ,最後 branch_a 再結合 branching 的資料,一起執行 join 的任務,每個任務之間的相依性都可以自己設定。

Airflow 的基礎名詞

DAG:有向無環圖

全名是 Directed Acyclic Graph,中文翻作有向無環圖,白話文就是有方向(Directed)不會有循環(Acyclic)的圖,簡稱為 DAG,就像上方的圖一樣,用途是決定每個任務節點之間的順序和關係,並設計工作流程如何運作。

DAG 每次執行都會實例化(Instantiate)出一個 DAG run,其中包含 DAG 的基礎設定,例如遇到錯誤要重試幾次,每次間距要多久等等

Tasks:工作任務

每個 DAG 裡面都有無數個 Tasks(工作任務),每個任務可以想成是完成一件事,就像是上面圖的當中的run_this_firstbranching的節點,對應到 Python 的程式就是一個個的 Function。

Operators:操作員/操作符

在 airflow 當中,Operators 又是更小的單位,一個 Tasks 當中可能有多個 Operators,Operators 通常會負責很特定的任務,所有的 Operators 都是繼承 BashOperator 所設計出來的類別,舉例一些特定的工作就很好理解了:

  • BashOperator: 執行 bash 指令
  • PythonOperator:呼叫 Python 的函數
  • EmailOperator:傳送 Email 的通知
  • MySqlOperator:操作與連接 MySQL
  • BigQueryOperator:執行 BigQuery 的 SQL 指令

通常 Operator 可以分成三種主要類型:

  1. 運行直到滿足特定條件
  2. 使用不同軟體或系統的功能
  3. 傳遞資料

鯨魚島的小結

其實還有 Hooks 和 Relationship 要談,另外 Scheduler、Webserver、Executor 也都還沒講,所以只能默默將食用攻略再多一天了,看來只能等到後天才能做出第一個 DAG 了。
/images/emoticon/emoticon02.gif


上一篇
[Day4] Airflow 快樂安裝指北(Windows篇)
下一篇
[Day6] 超級蘑菇 Airflow 的食用說明書(2)
系列文
Airflow 是什麼? 能吃嗎 ? 數據水管工的超級蘑菇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言