[英]How to manually run Airflow DAG on a particular directory
我正在評估氣流是否適合我的需求(在生物信息學中)。 我在使用氣流模型時遇到了一些困難。 特別:
這是我要執行的示例。 假設我剛剛在目錄中收到一些數據,其中包含一些共享文件系統中可用的20個文件。 我想執行DAG管道,該管道在20個文件中的每個文件上運行特定的bash命令,然后合並一些結果並執行進一步的處理。 DAG需要文件系統上的路徑,還需要列出目錄中的文件以為每個文件構造一個任務。
只要我可以動態地預先構建整個DAG,對我來說就沒有必要將元數據從一個任務傳遞到另一任務(我知道可以通過XCom
)。 但是我不清楚如何將DAG構造傳遞給我。
換句話說,我希望DAG定義包含類似
dag = DAG(...)
for file in glob(input_path):
t = BashOperator(..., dag=dag)
要手動觸發DAG時如何傳遞input_path
?
我也確實不需要cron式的調度。
關於input_path
您可以使用Airflow變量將其傳遞給DAG。 DAG文件中使用的代碼示例:
input_path = Variable.get("INPUT_PATH")
可以使用Airflow cli導入變量,也可以通過UI手動導入變量。
對於這種類型的邏輯,應該使用subdag:
dag = DAG(...) for file in glob(input_path): t = BashOperator(..., dag=dag)
SubDAG非常適合重復模式。 使用Airflow時,定義返回DAG對象的函數是一種不錯的設計模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.