如何使用hue在hive中传递变量

son*_*nia 6 parameters hadoop hive hue

我将传递变量,我尝试这样做

SET x = 'user';
SELECT * FROM foo WHERE user == @user
Run Code Online (Sandbox Code Playgroud)

但我有一个错误

那我试试

set x='user';
select * from foo where user == '${hiveconf:x}'
Run Code Online (Sandbox Code Playgroud)

但我有错误:

 error while compiling statement: failed: parseexception line   
 1:38 missing eof at 'user' near ''''
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢

rch*_*ang 2

我认为这是您想要实现的目标的正确表示法:

SELECT * FROM foo WHERE user = ${hiveconf:x};
Run Code Online (Sandbox Code Playgroud)

请注意,不需要用${hiveconf:x}引号引起来,而且比较运算符是=, not ==。从有关关系运算符的Hive 文档中,我们摘录了以下两个内容:

如果表达式 A 等于表达式 B,则 A = B TRUE,否则为 FALSE。

A == B 由于语法无效而失败。SQL 使用 =,而不是 ==。

因此,给出以下愚蠢的测试表:

hive> SELECT user, fullname FROM foo;
OK
other_user  Bar Bazfoo
user        Foo Barbaz
Time taken: 0.228 seconds, Fetched: 2 row(s)
Run Code Online (Sandbox Code Playgroud)

您的查询可能类似于以下内容:

hive> SET x='user';
hive> SELECT * FROM foo WHERE user = ${hiveconf:x};
OK
user        Foo Barbaz
Time taken: 0.229 seconds, Fetched: 1 row(s)
Run Code Online (Sandbox Code Playgroud)