我需要通过beeline在另一个配置单元查询中使用配置单元查询的输出作为变量。比如说 select * from 123 where some_variable='select from xyz';
但是,hive不支持where子句中的子查询,因此我将通过shell命令来实现。使用标准的hive cli很容易做到这一点,我可以这样做: my_shell_var=$(hive -S -e "select from xyz;")
然后我会跑: hive -e "select * from 123 where some_variable=$my_shell_var;"
但是,直线输出包含边框,因此我的shell var被包围 +------+ some output +------+
所以我不能把这个插入到下一个查询中,因为额外的字符改变了我的字符串。有没有一种方法可以从直线输出中删除边框,或者有没有一种替代方法来实现我的目标?
2条答案
按热度按时间htzpubme1#
为什么不用in子句?
从123中选择*某个变量(从xyz中选择)
imzjd6km2#
我找到了一个方法,你可以说:
--showHeader=false --outputformat=tsv2
在beeline cli命令ie中。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)。