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

时间:2015-02-27 10:10:47

标签: hadoop parameters hive hue

我会传递变量, 我试试这个

SET x = 'user';
SELECT * FROM foo WHERE user == @user

但我有一个错误

然后我会尝试

set x='user';
select * from foo where user == '${hiveconf:x}'

但我有错误:

 error while compiling statement: failed: parseexception line   
 1:38 missing eof at 'user' near ''''

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:2)

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

SELECT * FROM foo WHERE user = ${hiveconf:x};

请注意,无需用引号括起${hiveconf:x},并且比较运算符为=,而不是==。从关系运算符Hive documentation开始,我们有两个摘录:

  

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)

您的查询可能如下所示:

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)