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)
有任何想法吗?
谢谢
我认为这是您想要实现的目标的正确表示法:
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)