HiveQL:将查询结果用作变量

MaH*_*aHo 5 variables hive hiveql

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

set maximo=select max(var) from table;

select
  *
from
  table
where
  var=${hiveconf:maximo}
Run Code Online (Sandbox Code Playgroud)

但它不起作用

set maximo=select max(var) from table;

${hiveconf:maximo}
Run Code Online (Sandbox Code Playgroud)

向我展示了预期的结果.

这样做:

select '${hiveconf:maximo}'
Run Code Online (Sandbox Code Playgroud)

"select max(var) from table"
Run Code Online (Sandbox Code Playgroud)

虽然.

最好

lef*_*oin 8

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
Run Code Online (Sandbox Code Playgroud)

在你的脚本里面你可以使用 select '${hiveconf:maximo}'