在 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 变量的主要内容,如果未能解决你的问题,请参考以下文章