복붙노트

[HADOOP] 하드 코드 된 날짜 문자열 대신 Hive 날짜 함수를 사용할 때 Hive 쿼리 성능이 느려 집니까?

HADOOP

하드 코드 된 날짜 문자열 대신 Hive 날짜 함수를 사용할 때 Hive 쿼리 성능이 느려 집니까?

매일 업데이트되는 table_A 트랜잭션 테이블이 있습니다. 매일 file_date 필드를 사용하여 table_A에 삽입하기 위해 외부 table_B에서 필요한 데이터를 필터링하기 위해 외부 table_B에서 table_A에 새 데이터를 삽입합니다. 그러나 하드 코딩 된 날짜를 사용하는 것과 Hive 날짜 기능을 사용하면 성능이 크게 다릅니다.

-- Fast version (~20 minutes)
SET date_ingest = '2016-12-07';
SET hive.exec.dynamic.partition.mode = nonstrict;
SET hive.exec.dynamic.partition = TRUE;

INSERT
    INTO
        TABLE
            table_A PARTITION (FILE_DATE) SELECT
                    id, eventtime
                    ,CONCAT_WS( '-' ,substr ( eventtime ,0 ,4 ) ,SUBSTRING( eventtime ,5 ,2 ) ,SUBSTRING( eventtime ,7 ,2 ) )
                FROM
                    table_B
                WHERE
                    file_date = ${hiveconf:date_ingest}
;

다음과 비교 :

-- Slow version (~9 hours)
SET date_ingest = date_add(to_date(from_unixtime( unix_timestamp( ) )),-1);
SET hive.exec.dynamic.partition.mode = nonstrict;
SET hive.exec.dynamic.partition = TRUE;

INSERT
    INTO
        TABLE
            table_A PARTITION (FILE_DATE) SELECT
                    id, eventtime
                    ,CONCAT_WS( '-' ,substr ( eventtime ,0 ,4 ) ,SUBSTRING( eventtime ,5 ,2 ) ,SUBSTRING( eventtime ,7 ,2 ) )
                FROM
                    table_B
                WHERE
                    file_date = ${hiveconf:date_ingest}
;

비슷한 문제가 발생한 사람이 있습니까? 우리는 타사 UI를 사용하고 있기 때문에 Unix 하이브 명령에 액세스 할 수 없다고 가정합니다 (즉, --hiveconf 옵션을 사용할 수 없음).

해결법

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

    1.필터 절에서 함수를 사용할 때 파티션 정리가 작동하지 않는 경우가 있습니다. 랩퍼 쉘 스크립트에서 변수를 계산하고이를 -hiveconf 변수로 Hive에 전달하면 제대로 작동합니다. 예:

    필터 절에서 함수를 사용할 때 파티션 정리가 작동하지 않는 경우가 있습니다. 랩퍼 쉘 스크립트에서 변수를 계산하고이를 -hiveconf 변수로 Hive에 전달하면 제대로 작동합니다. 예:

    #inside shell script
    date_ingest=$(date -d '-1 day' +%Y-%m-%d)
    hive -f your_script.hql -hiveconf date_ingest="$date_ingest" 
    

    그런 다음 Hive 스크립트에서 WHERE file_date = '$ {hiveconf : date_ingest}'로 사용하십시오.

  2. from https://stackoverflow.com/questions/41048132/hive-query-performance-is-slow-when-using-hive-date-functions-instead-of-hardcod by cc-by-sa and MIT license