2017-12-08 18 views
0

아래와 같이 두 개의 하이브 테이블 t1과 t2가 있습니다. 두 개의 하이브 테이블 t1과 t2는 정확히 아래 내용과 두 개의 열, 'a'와 'b' 9 행.max의 별칭 인 열에 대한 하이브 쿼리 조인 결과가 없습니다.

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 

내 하이브 클라이언트 버전은 1.2.1이고, 입니다. 제발 이해해주세요.

+0

열 m는 무엇을 포함 않습니다를 참조하십시오? –

+0

@KaushikNayak 열 m은 하위 쿼리 t1_t의 max (b)의 별칭입니다. – MHX

+0

이 쿼리에는 아무런 문제가 없습니다. 내 cloudera VM에서 그것을 시도하고 귀하의 쿼리 결과를 반환합니다. 당신은 하이브의 다른 인스턴스에서 그것을 시도 했습니까? – Ramesh

답변

0

IdentityProjectRemover FIL 연산자 위에있는 SEL 연산자가 하이브 쿼리의 연산자 트리에 잘못 적용되면 문제가 발생합니다.

SEL 연산자가 입력 튜플에서 열을 제거하고 있습니다. 결과적으로 쿼리는 잘못된 결과를 반환합니다.

이 문제를 해결하려면 set hive.optimize.remove.identity.project=false을 사용하여 최적화 프로그램을 끄십시오.

자세한 내용은이 하이브 문제 HIVE-10996