我想知道如何将参数传递给通过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
)
答案 0 :(得分:1)
假设您使用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