Airflow 如何通过气流将参数传递给hql运行

Airflow 如何通过气流将参数传递给hql运行,airflow,apache-airflow,airflow-scheduler,Airflow,Apache Airflow,Airflow Scheduler,我想知道如何将参数传递给通过airflow运行的配置单元查询脚本。如果我只想为这个脚本添加一个参数,比如target_db=mydatabase,我该怎么做?我是否需要将它添加到默认参数中,然后调用它,然后在脚本的op_kwargs中调用它 default_args = { 'owner': 'airflow', 'depends_on_past': True, 'start_date': datetime(2017, 11, 1), 'email_on_fail

我想知道如何将参数传递给通过airflow运行的配置单元查询脚本。如果我只想为这个脚本添加一个参数,比如target_db=mydatabase,我该怎么做?我是否需要将它添加到默认参数中,然后调用它,然后在脚本的op_kwargs中调用它

default_args = {
    'owner': 'airflow',
    'depends_on_past': True,
    'start_date': datetime(2017, 11, 1),
    'email_on_failure': True,
    'email_on_retry': False,
    'retries': 2,
    'retry_delay': timedelta(minutes=5),
}

dag = DAG(dag_name, default_args=default_args, schedule_interval="@daily")

t_add_step = PythonOperator(
    task_id='add__step',
    provide_context=True,
    python_callable=add_emr_step,
    op_kwargs={
        'aws_conn_id': dag_params['aws_conn_id'],
        'create_job_flow_task': 'create_emr_flow',
        'get_step_task': 'get_email_step'
    },
    dag=dag
)

假设您正在使用BashOperator调用配置单元,它看起来是这样的

...
set_hive_db = BashOperator (
    bash_command = """
     hive --database {{params.database}} -f {{params.hql_file}}
     """,
     params = {
       "database": "testingdb",
       "hql_file": "myhql.hql"
     },
     dag = dag
)
...

另一种方法是在hql中使用数据库,只需在BashOperator中调用配置单元-f hqlfile.hql,配置单元命令行提供了一个选项
--database
,您可以在调用配置单元进行全局
配置单元
cli选项时使用该选项,也可以在
气流
连接
对象中使用。