Airflow:BashOperator

許博淳
數據共筆
Published in
May 6, 2022

在開始之前,先介紹一下什麼是 Bash

Bash

全名為 Bourne Again SHell,是 Linux底下 shell中的程式語言,必須誠實說我 對 Linux只有基礎認識,主要運用在本機 terminal查詢,在 Airflow和 Gitlab CICD也會使用到。

BashOperator

官方文件

在 Airflow中我們可以使用 Bash指令完成一些切換資料夾,開關機的動作,我們一起來看以下範例。

# 在2022-05-06,Airflow已經更新到 2.3.0版
# 以下使用均一目前的語法作為範例,已經去除部分機密
from airflow.operators.bash_operator import BashOperator
...
with models.DAG(
'main_pipeline',
start_date=utils.dates.days_ago(0),
schedule_interval=None,
max_active_runs=1,
catchup=False,
) as dag:
...
shutdown_airflow = BashOperator(
task_id="shutdown_airflow",
trigger_rule="none_failed",
bash_command=
'curl "xxx?code=yyy==&op=stop"'
)

從上述語法中我們可以理解到

  • task名稱是 shutdown_airflow,應該是負責關閉 Airflow
  • trigger_rule是 none_failed,代表其上游工作不能有失敗,Airflow預設失敗就會暫停整個 pipeline,但是也可以設定失敗就跳過工作,因此這邊的設定是雙重保險。
  • bash_command中是實際執行的指令

除此之外仍有非常多選項是均一沒有使用到的,歡迎參考官方文件

--

--