복붙노트

[HADOOP] 하이브의 파티션 열을 포함하여 다른 테이블에서 임시 테이블 만들기

HADOOP

하이브의 파티션 열을 포함하여 다른 테이블에서 임시 테이블 만들기

다른 테이블의 파티션 열을 포함하는 임시 테이블을 임시 테이블의 일부로 포함하고 다음 오류가 나타납니다. 다음은 table create 문입니다. 여기서 col4는 xyz 테이블의 파티션 열입니다.

그리고 create 문을 실행하는 동안 아래 오류가 발생합니다. 그리고 내가 그 성명을 실행하는 col4를 제거하면 괜찮아요.

오류:

도와주세요.

예:

CREATE TEMPORARY TABLE abc STORED AS PARQUET AS SELECT
col1 AS col1,
col2 AS col2,
col3 AS col3,
col4 AS col4
FROM xyz;

해결법

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

    1.파티션 테이블 __HIVE_DEFAULT_PARTITION__이 (가) 포함되어 있기 때문에 소스 테이블 xyz에 문제가 있습니다.

    파티션 테이블 __HIVE_DEFAULT_PARTITION__이 (가) 포함되어 있기 때문에 소스 테이블 xyz에 문제가 있습니다.

    하이브는 동적 파티션 모드에 삽입 된 파티션 값이 NULL 일 때 __HIVE_DEFAULT_PARTITION__ 값을 가진 파티션을 만듭니다.

    파티션 __HIVE_DEFAULT_PARTITION__은 숫자 유형과 호환되지 않습니다. 숫자 유형으로 변환 할 수 없기 때문에 오류가 발생합니다.

    이 파티션을 제거하거나 쿼리하려면 먼저 열 유형을 문자열로 변경해야합니다.

    ALTER TABLE xyz PARTITION COLUMN (col4 string);
    

    물론 제거하기 전에 표를 백업하고 데이터를 확인하고이 데이터로 수행 할 작업을 결정할 수 있습니다.

    파티션을 제거하려면 다음과 같이하십시오.

    ALTER TABLE xyz DROP PARTITION (col4 = '__HIVE_DEFAULT_PARTITION__');
    

    파티션을 제거한 후 파티션 유형을 다시 숫자 유형으로 변경할 수 있습니다.

  2. from https://stackoverflow.com/questions/51656133/creating-temp-table-from-another-table-including-partition-column-in-hive by cc-by-sa and MIT license