首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管道envsubst输出到蜂箱

管道envsubst输出到蜂箱
EN

Stack Overflow用户
提问于 2016-07-06 19:51:39
回答 1查看 1.4K关注 0票数 1

在使用Hive0.13.0时,我希望根据模板评估变量,然后立即执行生成的Hive代码(最好避免临时中间文件)。

下面是我想要做的一个(不工作的)例子:

template.hql

代码语言:javascript
复制
SELECT COUNT(*) FROM ${TABLE};

在外壳中:

代码语言:javascript
复制
export TABLE=DEFAULT.FOOTABLE
envsubst < template.hql | hive

这是否有什么特别的原因不起作用,以及是否有适当的方法来实现它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-06 20:02:44

替代措施如预期的那样有效:

代码语言:javascript
复制
$ cat template.hql
SELECT COUNT(*) FROM ${TABLE};
$ export TABLE=DEFAULT.FOOTABLE
$ envsubst < template.hql
SELECT COUNT(*) FROM DEFAULT.FOOTABLE;

因此,我怀疑hive不会从标准中读取查询。我从在线手册中看到,它支持-f参数,因此您可以手动创建文件:

代码语言:javascript
复制
TMPFILE=$(mktemp)
envsubst < template.hql > $TMPFILE
hive -f $TMPFILE
rm $TMPFILE

如果您使用的是新版本的bash,则可以避免中间文件:

代码语言:javascript
复制
hive -f <( envsubst < template.hql )

我不确定,但也要检查hive -f -是否可以从stdin中读取。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38232615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档