使用Hive 0.13.0,我想针对模板评估变量,然后立即执行生成的Hive代码(最好避免使用临时中间文件)。
以下是我想做的一个(非工作)示例:
template.hql
SELECT COUNT(*) FROM ${TABLE};
在shell中:
export TABLE=DEFAULT.FOOTABLE
envsubst < template.hql | hive
是否有一个特殊的原因,这不起作用,是否有适当的方法来实现它?
答案 0 :(得分:3)
替换按预期工作:
$ cat template.hql
SELECT COUNT(*) FROM ${TABLE};
$ export TABLE=DEFAULT.FOOTABLE
$ envsubst < template.hql
SELECT COUNT(*) FROM DEFAULT.FOOTABLE;
所以我怀疑hive
没有读取标准中的查询。我从an online manual看到它支持-f
参数,因此您可以手动创建文件:
TMPFILE=$(mktemp)
envsubst < template.hql > $TMPFILE
hive -f $TMPFILE
rm $TMPFILE
如果您使用的是新版本的bash,则可以避免使用中间文件:
hive -f <( envsubst < template.hql )
我不确定,但也检查hive -f -
是否可以从标准输入读取。