如何在hql文件中传递/读取hiveconfs变量

nom7f22z  于 2023-11-18  发布在  Hive
关注(0)|答案(1)|浏览(192)

使用hive操作符并传递hql文件在airflow中运行hql文件

hive_task = HiveOperator(
    task_id='run_hql',
    hql='/path/to/your_query.hql',
    hive_conn_id='your_hive_connection_id',
    hiveconf_jinja_translate=True,
    hiveconfs={'table_name': 'your_table_name', 'days': 5},
    dag=dag,
)

字符串
和hql内容如下

-- Define parameters
SET hivevar:table_name=YOUR_DEFAULT_TABLE_NAME;
SET hivevar:days_offset=YOUR_DEFAULT_DAYS_OFFSET;

-- Use parameters in the query
SET days={{ macros.dateutil.relativedelta.relativedelta(days=-hivevar:days) | replace(":", "-") }};

ANALYZE TABLE edw_health.${hivevar:table_name} PARTITION(ds = '{{ days }}') COMPUTE STATISTICS;
ANALYZE TABLE edw_health.${hivevar:table_name} PARTITION(ds = '{{ days }}') COMPUTE STATISTICS FOR COLUMNS;


获取错误,因为'hiveconf'未定义。
任何一个建议,如果我错过了什么,以及如何读取hql文件中的hive confs变量值

sqserrrh

sqserrrh1#

您正在Hive脚本中使用hivevar命名空间:

${hivevar:table_name}

字符串
但是hiveconfs在hiveconf命名空间中作为key=value传递。
请参阅hive_operator
使用hiveconf代替hivevar:

${hiveconf:table_name}

相关问题