在 HiveQL 中使用变量
Using variables in HiveQL
在我的用例中,我需要像下面这样的东西
set x=<query1> // This query 1 returns a value 75
set y=x
print y // only for testing
select * from table1 where id=y
set var1=<query2>
set var2=<query3>
set var3=<query4>
set count = var1+var2+var3
在 Hive 中可以这样做吗?我正在努力甚至 运行 一个简单的查询并将结果放在一个变量中。任何线索都会很有帮助。
首先,我正在尝试执行如下操作
set param = SELECT P.K_ID FROM T_PARAMETER AS P, T_TOOL_PARAMETER AS M WHERE P.K_PARAMETER_GENERIC = 6 AND P.K_ID = M.K_PARAMETER AND M.k_airborn = 17;
INSERT INTO T_TEMP SELECT T.F_RECORDEDVALUE, T.F_VALIDITY FROM T_RECORD AS T WHERE T.K_PARAMETER=${hiveconf:param};
以上查询失败。我不确定语法是否正确。我得到的错误是
cannot recognize input near 'SELECT' 'P' '.' in expression specification
If I put the double quotes in where clause WHERE T.K_PARAMETER="${hiveconf:parameter}";, then, No error comes but the T_TEMP is empty.
如果我硬编码值 set parameter = 36 并在 where 子句 WHERE T.K_PARAMETER=${hiveconf:parameter}; 中使用,那么它可以正常工作。
只有当我尝试将查询结果放入变量时才会出现问题
我更喜欢使用 Hue,因为我需要编写很多这样的查询。
在终端上
var1=$(hive -e "select count(*) from table1;")
var2=$(hive -e "select count(*) from table2;")
var1=$(hive -e "select count(*) from table3;")
count=$(( $var1 + $var1 + $var3))
echo $count
在 Hive 控制台上
INSERT INTO T_TEMP SELECT T.F_RECORDEDVALUE, T.F_VALIDITY FROM T_RECORD AS T WHERE T.K_PARAMETER In (SELECT P.K_ID FROM T_PARAMETER AS P, T_TOOL_PARAMETER AS M WHERE P.K_PARAMETER_GENERIC = 6 AND P.K_ID = M.K_PARAMETER AND M.k_airborn = 17);
在我的用例中,我需要像下面这样的东西
set x=<query1> // This query 1 returns a value 75
set y=x
print y // only for testing
select * from table1 where id=y
set var1=<query2>
set var2=<query3>
set var3=<query4>
set count = var1+var2+var3
在 Hive 中可以这样做吗?我正在努力甚至 运行 一个简单的查询并将结果放在一个变量中。任何线索都会很有帮助。
首先,我正在尝试执行如下操作
set param = SELECT P.K_ID FROM T_PARAMETER AS P, T_TOOL_PARAMETER AS M WHERE P.K_PARAMETER_GENERIC = 6 AND P.K_ID = M.K_PARAMETER AND M.k_airborn = 17;
INSERT INTO T_TEMP SELECT T.F_RECORDEDVALUE, T.F_VALIDITY FROM T_RECORD AS T WHERE T.K_PARAMETER=${hiveconf:param};
以上查询失败。我不确定语法是否正确。我得到的错误是
cannot recognize input near 'SELECT' 'P' '.' in expression specification
If I put the double quotes in where clause WHERE T.K_PARAMETER="${hiveconf:parameter}";, then, No error comes but the T_TEMP is empty.
如果我硬编码值 set parameter = 36 并在 where 子句 WHERE T.K_PARAMETER=${hiveconf:parameter}; 中使用,那么它可以正常工作。 只有当我尝试将查询结果放入变量时才会出现问题
我更喜欢使用 Hue,因为我需要编写很多这样的查询。
在终端上
var1=$(hive -e "select count(*) from table1;")
var2=$(hive -e "select count(*) from table2;")
var1=$(hive -e "select count(*) from table3;")
count=$(( $var1 + $var1 + $var3))
echo $count
在 Hive 控制台上
INSERT INTO T_TEMP SELECT T.F_RECORDEDVALUE, T.F_VALIDITY FROM T_RECORD AS T WHERE T.K_PARAMETER In (SELECT P.K_ID FROM T_PARAMETER AS P, T_TOOL_PARAMETER AS M WHERE P.K_PARAMETER_GENERIC = 6 AND P.K_ID = M.K_PARAMETER AND M.k_airborn = 17);