在 HiveQL 中使用 hive 变量

Posted

技术标签:

【中文标题】在 HiveQL 中使用 hive 变量【英文标题】:use hive variable in HiveQL 【发布时间】:2020-07-01 13:57:58 【问题描述】:

我有一个提供 max_processed_date 的查询(它提供单个值),这个日期用于从 master_table 获取数据。我正在使用 hivevars 这样做,但它直接替换查询而不是首先评估它.

set hivevar max_date= select max_processed_date from Tab_date where process='X';

select * from master_table where process_date > $hivevar:max_date

但这表现为select * from master_table where process_date > select max_processed_date from Tab_date where process='X';

hiveql 不支持。是否可以先评估 hivevar,然后在 master_table 查询中使用该值?

【问题讨论】:

这能回答你的问题吗? HiveQL: Using query results as variables 这需要一个包装器,仅使用 hive 查询是不可能的。 是的。对,仅使用 hive 查询是不可能的 【参考方案1】:

上面提到的答案 (HiveQL: Using query results as variables) 可用于使用 Shell 脚本包装器将查询结果放入变量中。但是对于您的特定问题,您可以执行以下操作:

select a.* 
from master_table as a,
  (select max_processed_date from Tab_date where process='X') as b
where a.process_date > b.max_processed_date;

请注意,内部查询应该是 1 行,否则这会炸毁最终表。如果代码逻辑需要,选择语句中的distinct 可以解决它。

【讨论】:

以上是关于在 HiveQL 中使用 hive 变量的主要内容,如果未能解决你的问题,请参考以下文章

HiveQL:索引

Hive06-HiveQL:查询

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

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

MongoDB 中的 HiveQL

Hive:对指定组求和(HiveQL)