在Hive中,我想从表中动态提取信息,将其保存在变量中并进一步使用它。考虑下面的示例,在该示例中检索列var的最大值,并希望将其用作后续查询中的条件。

set maximo=select max(var) from table;

select
  *
from
  table
where
  var=${hiveconf:maximo}

尽管它不起作用
set maximo=select max(var) from table;

${hiveconf:maximo}

向我展示了预期的结果。

正在做:
select '${hiveconf:maximo}'


"select max(var) from table"

尽管。

最好的

最佳答案

Hive照原样替换变量,并且不执行它们。使用 shell 包装程序脚本将结果转换为变量,并将其传递给您的Hive脚本。

maximo=$(hive -e "set hive.cli.print.header=false; select max(var) from table;")
hive -hiveconf "maximo"="$maximo" -f your_hive_script.hql

然后在脚本中使用select '${hiveconf:maximo}'

关于variables - HiveQL:将查询结果用作变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37206449/

10-13 07:51