복붙노트

[HADOOP] HIVE에서 두 테이블을 결합하는 법.

HADOOP

HIVE에서 두 테이블을 결합하는 법.

두 테이블 A와 B는 모두 다음과 같은 구조를 가지고 있습니다.

// Table A

Name    Age    actualdate    no

// Table B

City    sdate  edate         id

JOIN, id = no 및 sdate <= actualdate 및 edate> = actualdate를 사용하여 A 및 B에서 모든 필드를 얻으려고합니다.

나는 where 절을 사용하여 아래와 같이 시도했지만 작동하지 않는다.

select v3.*, t3.* from A v3
JOIN
B t3
where v3.id = t3.no and
      v3.sdate <= t3.actualdate and
      v3.edate >= t3.actualdate
limit 1;

On 절 사용 :

select v3.*, t3.* from A v3
    JOIN
    B t3
    ON ( v3.id = t3.no and
          v3.sdate <= t3.actualdate and
          v3.edate >= t3.actualdate )
    limit 1;

불행히도 Hive는 동등한 도구를 지원하지 않습니다. 거기 조인을 사용하여 위의 달성 방법이 있습니까?

해결법

  1. ==============================

    1.ON 절 내에서 <= 및> = 조건을 사용하는 대신 WHERE를 사용하여 필터링을 수행 할 수 있습니다.

    ON 절 내에서 <= 및> = 조건을 사용하는 대신 WHERE를 사용하여 필터링을 수행 할 수 있습니다.

    select v3.*, t3.* from A t3
    JOIN
    B v3
    ON ( v3.id = t3.no)
    WHERE v3.sdate <= t3.actualdate and
          v3.edate >= t3.actualdate
    limit 1;
    

    참고 : t3 및 v3 별칭이 서로 바뀌 었습니다.

  2. from https://stackoverflow.com/questions/25832513/how-to-join-two-tables-in-hive by cc-by-sa and MIT license