HiveQL:将查询结果用作变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HiveQL:将查询结果用作变量相关的知识,希望对你有一定的参考价值。

在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}'

以上是关于HiveQL:将查询结果用作变量的主要内容,如果未能解决你的问题,请参考以下文章

多个连接的 HiveQL 查询

HiveQL 查询不返回任何结果,也没有错误

在 HiveQL 中使用 hive 变量

如何将变量数据传递给 createFragementContainer

如何在Java中执行Hive命令或HiveQL

HiveQL - 大数据的高效 geoip 发现