Hive 设置变量以通过直线动态查询

Hive 设置变量以通过直线动态查询,hive,beeline,Hive,Beeline,我需要通过直线将配置单元查询的输出用作另一个配置单元查询中的变量。大概是 选择*from 123,其中某个_变量='select abc from xyz' 然而,配置单元不支持where子句中的子查询,因此我将通过shell命令来实现。使用标准的hive cli很容易做到这一点,我只需执行以下操作: my_shell_var=$hive-S-e从xyz中选择abc 然后我会跑: hive-e从123中选择*其中一些变量=$my\u shell\u var 然而,直线输出包括边框,所以我的she

我需要通过直线将配置单元查询的输出用作另一个配置单元查询中的变量。大概是

选择*from 123,其中某个_变量='select abc from xyz'

然而,配置单元不支持where子句中的子查询,因此我将通过shell命令来实现。使用标准的hive cli很容易做到这一点,我只需执行以下操作:

my_shell_var=$hive-S-e从xyz中选择abc

然后我会跑:

hive-e从123中选择*其中一些变量=$my\u shell\u var

然而,直线输出包括边框,所以我的shell变量被包围

+---+一些输出+---+

因此,我无法将其插入到下一个查询中,因为额外的字符会更改我的字符串。有没有一种方法可以从直线输出中删除边框,或者有没有一种替代方法来实现我的目标?

为什么不使用in子句


从123中选择*在我找到的从xyz选择abc中的某个变量中,您可以将:

-showHeader=false-outputformat=tsv2

在您的beeline cli命令ie中

my_shell_var=$beeline-showHeader=false-outputformat=tsv2-e您的查询

然后使用shell将该变量放入下一个查询:

beeline-e从123中选择*其中一些变量=$my\u shell\u var


输出将没有任何标题-showHeader=false或borders-outputformat=tsv2。

Hive不支持子查询,其中clauseit从Hive 0.13开始,有趣的是,它只支持in,而不是in,EXISTS和notexists,我使用了“=”,但这不起作用。