복붙노트

[HADOOP] HIVE 테이블에서 가장 최근의 파티션을 찾는 방법

HADOOP

HIVE 테이블에서 가장 최근의 파티션을 찾는 방법

나는 201 개의 파티션을 가진 파티션 테이블을 가지고있다. 이 테이블에서 최신 파티션을 찾고이를 사용하여 데이터를 처리해야합니다. 모든 파티션의 목록을 찾는 쿼리는 다음과 같습니다.

use db;
show partitions table_name; 

이 파티션의 최신 버전을 찾으려면 쿼리가 필요합니다. 파티션 형식입니다.

ingest_date=2016-03-09

내게 잘못된 결과를 준 max ()를 사용하여 시도했다. 나는 전체 테이블을 가로 질러 가고 싶지 않다.

select max(ingest_date) from db.table_name; 

이것은 나에게 예상되는 출력을 줄 것이다 ..하지만 1 위 자리에 파티션을 가지고있는 모든 지점을 죽인다.

HIve 테이블의 최신 파티션을 가져 오는 더 효율적인 쿼리가 있습니까?

해결법

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

    1."쇼 파티션"을 사용할 수 있습니다 :

    "쇼 파티션"을 사용할 수 있습니다 :

    hive -e "set hive.cli.print.header=false;show partitions table_name;" | tail -1 | cut -d'=' -f2
    

    이렇게하면 "2016-03-09"가 출력됩니다.

  2. ==============================

    2.위에 제시된 것처럼 하이브 쉘에서 "show partitions"을 실행하지 않으려면 max () 쿼리에 필터를 적용 할 수 있습니다. 그것은 완전한 스캔을하지 않을 것이며 결과는 상당히 빨라야합니다!

    위에 제시된 것처럼 하이브 쉘에서 "show partitions"을 실행하지 않으려면 max () 쿼리에 필터를 적용 할 수 있습니다. 그것은 완전한 스캔을하지 않을 것이며 결과는 상당히 빨라야합니다!

    db.table_name에서 max (ingest_date)를 선택하십시오. 여기서 ingest_date> date_add (current_date, -3)는 2-3 개의 파티션 만 검색합니다.

  3. from https://stackoverflow.com/questions/36095790/how-to-find-the-most-recent-partition-in-hive-table by cc-by-sa and MIT license