如何在多个类别的基础上并行运行/实例化Dag(气流)?
例如: 我有一个气流(DAG),我定期运行 我如何安排dag在不同的 Batchnames 上平行运行(在parallet中):
等等
我使用环境变量来传递 Batchnames ,然后在服务器上使用多个 tmux 会话并行运行dag,但它已经搞砸了。
我可以使用哪种更好的方法,我可以节省时间并同时为多个蝙蝠侠运行dag?
感谢您的时间。
答案 0 :(得分:0)
由于airflow运行表示bash-shell命令图的python类,因此可以通过创建两个独立的DAG在气流中执行此操作。这是对tutorial,
的略微修改dag = DAG(dag_id='batch')
task = [ BashOperator(
task_id='templated',
bash_command=templated_command,
params={'batch_name': batch_name},
dag=dag)
for batch_name in ["batch one", "batch two"]]
dag.add_task(task[0])
dag.add_task(task[1])
由于没有依赖性,只要气流已经设置,它们就应该并行运行。如果需要设置shell环境变量,请在模板中的某处添加VAR = {{params.batch_name}}。
假设您的程序使用sys.argv,您还可以使用普通作业控制来启动:
python ~/airflow/dags/tutorial.py "batch one" &
python ~/airflow/dags/tutorial.py "batch two" &
wait