Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Airflow 来自cli的气流通过参数_Airflow_Apache Airflow_Airflow Scheduler - Fatal编程技术网

Airflow 来自cli的气流通过参数

Airflow 来自cli的气流通过参数,airflow,apache-airflow,airflow-scheduler,Airflow,Apache Airflow,Airflow Scheduler,是否有方法将参数传递给: airflow trigger_dag dag_name {param} ? 我有一个监控文件目录的脚本——当文件移动到目标目录时,我想触发dag,并将其作为参数传递到文件路径。可以。您的Dag应该有一个Dag和一个Bask任务,如下所示: from airflow.operators.bash_operators import BashOperator args = {'start_date':datetime.now(), 'owner':'ai

是否有方法将参数传递给:

airflow trigger_dag dag_name {param}
?


我有一个监控文件目录的脚本——当文件移动到目标目录时,我想触发dag,并将其作为参数传递到文件路径。

可以。您的Dag应该有一个Dag和一个Bask任务,如下所示:

from airflow.operators.bash_operators import BashOperator

args = {'start_date':datetime.now(),
        'owner':'airflow',}
dag = DAG(
      dag_id='param_dag', 
      default_args=args,
      schedule_interval=None)

bash_task=BashOperator(
     task_id="bash_task" 
     bash_command= 'bash ~/path/bashscript.sh {{ dag_run.conf["parameter"] if dag_run else "" }} ', 
    //bashscript your script you want to run and the dag_run.conf will hold the parameter you want to pass
     dag=dag)
airflow trigger_dag --conf {"file_variable": "/path/to/file"} dag_id
现在,在命令行中键入以下命令:

 airflow trigger_dag dag_id --conf '{"parameter":"~/path" }'

您可以这样传递它:

from airflow.operators.bash_operators import BashOperator

args = {'start_date':datetime.now(),
        'owner':'airflow',}
dag = DAG(
      dag_id='param_dag', 
      default_args=args,
      schedule_interval=None)

bash_task=BashOperator(
     task_id="bash_task" 
     bash_command= 'bash ~/path/bashscript.sh {{ dag_run.conf["parameter"] if dag_run else "" }} ', 
    //bashscript your script you want to run and the dag_run.conf will hold the parameter you want to pass
     dag=dag)
airflow trigger_dag --conf {"file_variable": "/path/to/file"} dag_id
然后,在dag中,可以使用模板访问此变量,如下所示:

{{ dag_run.conf.file_variable }}

如果这不起作用,共享一个简单版本的dag可能有助于获得更好的答案。

我的任务是一个蟒蛇操作员,而不是一个机器人BashOperator@bsd例如,如果你不想使用模板,该怎么办?@melchoir55我在非模板的情况下玩了一些把戏。在DAG定义文件的顶部设置全局变量,例如
param
param=“{{DAG_run.conf.get('file_variable')}}”
。然后可以在文件中的任何位置使用
param
变量。