【发布时间】:2014-06-04 04:33:45
【问题描述】:
我需要在参数中分配一个“选择值”并在配置单元代码中使用它,而不是为参数分配常量。
在 Hive 中,设置 a = 10; //但不是这样,我们如何分配动态值,如下所示:
我需要:set a = select max(x) from y; //将表'y'中'x'的最大值分配给'a'参数。
阿耶莎
【问题讨论】:
-
你能在哪里解决这个问题?
我需要在参数中分配一个“选择值”并在配置单元代码中使用它,而不是为参数分配常量。
在 Hive 中,设置 a = 10; //但不是这样,我们如何分配动态值,如下所示:
我需要:set a = select max(x) from y; //将表'y'中'x'的最大值分配给'a'参数。
阿耶莎
【问题讨论】:
当您直接从查询中分配值时,您应该使用 select 而不是 set。
SELECT @variable1 = column1, variable2 = column2
FROM table1
WHERE column1 = 'unique value'
或
INSERT OVERWRITE LOCAL DIRECTORY '<directory>' SELECT * FROM table_name;
【讨论】:
无法从 Hive 内部执行此操作,但您可以从 Hive 外部执行此操作,例如在 bash 脚本中:
a=`hive -S -e 'select max(x) from y'`
hive --hiveconf "a=$a" -e '[next query here]'
【讨论】:
hive --hiveconf "a=$a" -e 'select * from z where x = ${hiveconf:a}'