设置变量通过Beeline动态查询
Set Variable to Query Dynamically Through Beeline
我需要通过直线将一个配置单元查询的输出用作另一个配置单元查询中的变量。所以像
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 +------+
因此我无法将其插入到下一个查询中,因为额外的字符会更改我的字符串。有没有一种方法可以从直线输出中删除边框,或者是否有其他方法可以完全实现我想要做的事情?
为什么不在子句中使用?
select * 来自 123,其中 some_variable in (select abc from xyz)
我找到了一个方法,你可以输入:
--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;"
输出将没有任何 headers (--showHeader=false) 或边框 (--outputformat=tsv2)。
我需要通过直线将一个配置单元查询的输出用作另一个配置单元查询中的变量。所以像
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 +------+
因此我无法将其插入到下一个查询中,因为额外的字符会更改我的字符串。有没有一种方法可以从直线输出中删除边框,或者是否有其他方法可以完全实现我想要做的事情?
为什么不在子句中使用?
select * 来自 123,其中 some_variable in (select abc from xyz)
我找到了一个方法,你可以输入:
--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;"
输出将没有任何 headers (--showHeader=false) 或边框 (--outputformat=tsv2)。