hive查询与联接工作在llap但不在hive中

时间:2018-01-29 18:06:10

标签: sql hive hiveql

低于范围查询,加入在llap中工作正常,但在Hiveserver2 / Hive.CLI中没有。

请建议如何在Hive中使用范围连接查询。

Hive版本:1.2.1.2.6

HDP版本:2.6.0.3

查询:

select * from datahub.cgs_tmp_gre gre
INNER JOIN datahub.cgs_tmp_cgsrxclm_ev_ba ba
ON gre.guar_key = ba.guar_key and gre.serviced_dte = ba.serviced_dte
AND gre.ts between ba.obsv_start_ts and ba.obsv_stop_ts
AND gre.ts between ba.obsv_start_ts and ba.obsv_stop_ts
AND gre.phcy_claim_id=2;

以下是我们在hive CLI或hive服务器2中运行时抛出的错误:

  

错误:编译语句时出错:FAILED:SemanticException第0行:-1在JOIN' obsv_stop_ts'中遇到左右别名(状态= 42000,代码= 40000)

1 个答案:

答案 0 :(得分:0)

此错误是因为您有两次相同的join条件。 between解析为>=<=join条件(版本2.2.0之前)不支持不等式。将条件移动到where子句,它应该可以工作。

select * --specify required columns rather than *
from datahub.cgs_tmp_gre gre
INNER JOIN datahub.cgs_tmp_cgsrxclm_ev_ba ba
ON gre.guar_key = ba.guar_key and gre.serviced_dte = ba.serviced_dte
WHERE gre.ts >= ba.obsv_start_ts and gre.ts <= ba.obsv_stop_ts --replaced between with >= and <=
AND gre.phcy_claim_id=2;