如何通过气流将参数传递给 hql 运行
How to pass parameters to a hql run via airflow
我想知道如何通过气流将参数传递给配置单元查询脚本 运行。如果我只想为这个脚本添加一个参数,比如 target_db = mydatabase,我该怎么做?我是否需要将它添加到 default_args 然后调用它然后在脚本的 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 调用 Hive,它看起来像这样
...
set_hive_db = BashOperator (
bash_command = """
hive --database {{params.database}} -f {{params.hql_file}}
""",
params = {
"database": "testingdb",
"hql_file": "myhql.hql"
},
dag = dag
)
...
另一种方法是在您的 hql 中 USE database
并在 BashOperator
中调用 hive -f hqlfile.hql
我想知道如何通过气流将参数传递给配置单元查询脚本 运行。如果我只想为这个脚本添加一个参数,比如 target_db = mydatabase,我该怎么做?我是否需要将它添加到 default_args 然后调用它然后在脚本的 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 调用 Hive,它看起来像这样
...
set_hive_db = BashOperator (
bash_command = """
hive --database {{params.database}} -f {{params.hql_file}}
""",
params = {
"database": "testingdb",
"hql_file": "myhql.hql"
},
dag = dag
)
...
另一种方法是在您的 hql 中 USE database
并在 BashOperator
hive -f hqlfile.hql