在使用Hive0.13.0时,我希望根据模板评估变量,然后立即执行生成的Hive代码(最好避免临时中间文件)。
下面是我想要做的一个(不工作的)例子:
template.hql
SELECT COUNT(*) FROM ${TABLE};在外壳中:
export TABLE=DEFAULT.FOOTABLE
envsubst < template.hql | hive这是否有什么特别的原因不起作用,以及是否有适当的方法来实现它?
发布于 2016-07-06 20:02:44
替代措施如预期的那样有效:
$ cat template.hql
SELECT COUNT(*) FROM ${TABLE};
$ export TABLE=DEFAULT.FOOTABLE
$ envsubst < template.hql
SELECT COUNT(*) FROM DEFAULT.FOOTABLE;因此,我怀疑hive不会从标准中读取查询。我从在线手册中看到,它支持-f参数,因此您可以手动创建文件:
TMPFILE=$(mktemp)
envsubst < template.hql > $TMPFILE
hive -f $TMPFILE
rm $TMPFILE如果您使用的是新版本的bash,则可以避免中间文件:
hive -f <( envsubst < template.hql )我不确定,但也要检查hive -f -是否可以从stdin中读取。
https://stackoverflow.com/questions/38232615
复制相似问题