是否可以在hiveconf变量的名称中使用点?
文档中的所有示例都显示了简单的变量名,如 a
.
如果是:
如何在hql脚本中引用它? select ${hiveconf:airflow.ctx.dag.dag_id} as dag_id;
产生语法错误(while ${hiveconf:d}
是可以的)。
如果没有:
为什么airflow或azkaban会像这样向配置单元脚本传递变量?难道作者不知道引用这些变量是不可能的吗? hive -hiveconf airflow.ctx.dag.dag_id=video-plays-adverts -f test-hiveconf.hql
谢谢!
2条答案
按热度按时间fwzugrvs1#
已经检查过了,这是有效的:
可能你忘了引号。
niwlg2el2#
结果发现有几个复杂的问题:
1) hivevars作为一个c宏系统工作-当您指定
set a = concat('-', ${hiveconf:var_name})
,内容${hiveconf:a}
不是字符串,而是命令concat('-', ${hiveconf:var_name})
每次使用它都会得到评估。2) 我在静态分区中使用它,它只接受文本,所以:
翻译成这样:
不支持静态分区-静态分区需要文本。
故事结束了。似乎没有办法使用“computed”(
set a = concat(${b}, ${c})
)hiveconf
常量位置的变量。