[英]how to parallelize similar BashOperator tasks but different parameters in an Airflow DAG
我在DAG下面並行執行了2個任務在現實世界中,這些可能是15或20個任務,輸入參數來自數組,如下所示。
fruits = ["apples", "bananas"]
bad_dag = DAG('bad_dag_3', default_args=default_args, schedule_interval=None)
t0=BashOperator(
task_id="print",
bash_command='echo "Beginning parallel tasks next..." ',
dag=bad_dag)
t1=BashOperator(
task_id="fruit_"+fruits[0],
params={"fruits": fruits},
bash_command='echo fruit= {{params.fruits[0]}} ',
dag=bad_dag)
t2=BashOperator(
task_id="fruit_"+fruits[1],
params={"fruits": fruits},
bash_command='echo fruit= {{params.fruits[1]}} ',
dag=bad_dag)
t0>>[t1, t2]
什么是我寫這個DAG的最佳方式,所以我不必像上面那樣一遍又一遍地重寫相同的BashOperator。
我不能使用循環,因為如果我使用循環,我無法並行化任務。
使用以下DAG。 這個想法是每個任務的task_id
應該是唯一的,氣流將處理其余任務。
fruits = ["apples", "bananas"]
bad_dag = DAG('bad_dag_3', default_args=default_args, schedule_interval=None)
t0=BashOperator(
task_id="print",
bash_command='echo "Beginning parallel tasks next..." ',
dag=bad_dag)
for fruit in fruits:
task_t = BashOperator(
task_id="fruit_"+fruit,
params={"fruit": fruit},
bash_command='echo fruit= {{params.fruit}} ',
dag=bad_dag)
t0 >> task_t
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.