我需要通过直线将hive查询的输出用作另一个hive查询中的变量。像
这样的东西 select * from 123 where some_variable='select abc from xyz';
然而,hive不支持where子句中的子查询,所以我会通过shell命令来完成它。这很容易使用标准的hive cli,我会做这样的事情:
my_shell_var=$(hive -S -e "select abc from xyz;")
然后我会跑:
hive -e "select * from 123 where some_variable=$my_shell_var;"
然而,直线输出包括边框,因此my_shell_var被包围为
+------+ some output +------+
所以我无法将其插回到下一个查询中,因为额外的字符会更改我的字符串。有没有办法从直线输出中删除边界,或者是否有其他方法来实现我想要完全做的事情?
答案 0 :(得分:1)
我找到了一种方法,你可以把:
--showHeader=false --outputformat=tsv2
在您的beeline cli命令即。
my_shell_var=$(beeline --showHeader=false --outputformat=tsv2 -e "your query")
然后使用shell将该变量放入下一个查询中:
beeline -e "select * from 123 where some_variable=$my_shell_var;"
输出没有任何标题(--showHeader = false)或边框(--outputformat = tsv2)。
答案 1 :(得分:0)
为什么不使用in子句?
从123中选择*,其中some_variable in(从xyz中选择abc)