我有两个hive表,t1和t2,它们具有完全相同的内容,如下所示,两列,' a'和' b'和9行。
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
问题是以下hive_QL什么都没有,
select
t2_t.a,
t2_t.m
from
(select
a,
max(b) as m
from
t1
group by
a
) t1_t
join
(select
a,
max(b) as m
from
t2
group by
a
) t2_t
on
t1_t.m=t2_t.m
但如果我改变
t2_t.a,
t2_t.m
到' *',hive_QL正常工作,输出就是,
1 a 1 a
2 b 2 b
3 c 3 c
4 d 4 d
5 e 5 e
6 f 6 f
7 g 7 g
8 h 8 h
9 i 9 i
我的hive客户端版本是1.2.1, 所以请帮助我理解这一点。
答案 0 :(得分:0)
当IdentityProjectRemover
优化应用于Hive查询的运算符树时,会发生问题,FIL运算符上方的SEL运算符被错误地删除。
SEL运算符正在修改输入元组中的列。因此,查询返回不正确的结果。
要解决此问题,请set hive.optimize.remove.identity.project=false
关闭优化程序。
有关详细信息,请参阅此Hive问题HIVE-10996