使用 hive 运算符并传递 hql 文件在气流中运行 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 变量值
您正在 Hive 脚本中使用
hivevar
命名空间:
${hivevar:table_name}
但是 hiveconf 在
hiveconf
命名空间中作为 key=value 传递。
使用 hiveconf 而不是 hivevar:
${hiveconf:table_name}