hive查询连接的列是max的别名,不会产生任何结果

时间:2017-12-08 16:33:36

标签: hive hiveql

我有两个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, 所以请帮助我理解这一点。

1 个答案:

答案 0 :(得分:0)

IdentityProjectRemover优化应用于Hive查询的运算符树时,会发生问题,FIL运算符上方的SEL运算符被错误地删除。

SEL运算符正在修改输入元组中的列。因此,查询返回不正确的结果。

要解决此问题,请set hive.optimize.remove.identity.project=false关闭优化程序。

有关详细信息,请参阅此Hive问题HIVE-10996