簡體   English   中英

如何在特定目錄上手動運行Airflow DAG

[英]How to manually run Airflow DAG on a particular directory

我正在評估氣流是否適合我的需求(在生物信息學中)。 我在使用氣流模型時遇到了一些困難。 特別:

  • DAG文件實際上在哪里執行? 它的背景是什么? 如何將輸入數據傳遞到DAG定義文件中? (例如,我想為目錄中的每個文件創建一個任務。)
  • 如何臨時執行DAG? 如何為DAG構造傳遞參數?

這是我要執行的示例。 假設我剛剛在目錄中收到一些數據,其中包含一些共享文件系統中可用的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM