복붙노트

[HADOOP] Hive 1.1.0 테이블 파티션 유형을 int에서 string으로 변경합니다.

HADOOP

Hive 1.1.0 테이블 파티션 유형을 int에서 string으로 변경합니다.

int 타입의 파티션을 가지고 있지만 문자열로 변환하고자하는 테이블을 가지고 있습니다. 그러나, 나는 이것을 어떻게하는지 이해할 수 없다.

테이블 설명은 다음과 같습니다.

Col1 timestamp
Col2 string
Col3 string
Col4 string
Part_col int

# Partition information
# col_name data_type comment

Part_col int

내가 만든 파티션은 Part_col = 0, Part_col = 1, ..., Part_col = 23입니다.

Part_col = '0'등으로 변경하고 싶습니다.

하이브에서이 명령을 실행합니다.

set hive.exec.dynamic.partitions = true;
Alter table tbl_name partition (Part_col=0) Part_col Part_col string;

또한 "partition (Part_col)"을 사용하여 모든 파티션을 한꺼번에 변경하려고했습니다.

"잘못된 열 참조 Part_col"오류가 발생합니다.

10 진수 열 변환에 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types의 예제를 사용하고 있는데 dec_column_name이 나타내는 내용을 파악할 수 없습니다.

감사

해결법

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

    1.파기의 약간은 파티션 컬럼 데이터 타입 (https://issues.apache.org/jira/browse/HIVE-3672)을 업데이트하기위한 명령을 정확히 가지고있는 하이브 JIRA가 있음을 보여주었습니다.

    파기의 약간은 파티션 컬럼 데이터 타입 (https://issues.apache.org/jira/browse/HIVE-3672)을 업데이트하기위한 명령을 정확히 가지고있는 하이브 JIRA가 있음을 보여주었습니다.

    alter table {table_name} partition column ({column_name} {column_type});
    

    JIRA에 따르면이 명령은 구현되었지만 Hive Wiki에는 문서화 된 적이 없다는 것이 확실합니다.

    내 하이브 0.14 시스템에서 사용했고 예상대로 작동했습니다.

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

    2.나는 당신이 테이블의 스키마를 정의하고 파티션 값이 더 이상 정수가 아닐 것이라고 재정의해야한다고 생각한다. 그리고 이것은 이제 문자열 타입이 될 것이다.

    나는 당신이 테이블의 스키마를 정의하고 파티션 값이 더 이상 정수가 아닐 것이라고 재정의해야한다고 생각한다. 그리고 이것은 이제 문자열 타입이 될 것이다.

    내가 추천하는 것은 :

    위의 단계 (물리적으로 구조 폴더)는 이미 가지고있는 구조와 아무런 차이가 없습니다. 차이점은 하이브 변환 저장소, 특히 파티션을 만들 때 생성되는 "가상 열"에 있습니다.

    또한, 대신 part_col = 1과 같이 질의를 작성하면 이제 part_col = '1'과 같은 쿼리를 작성할 수 있습니다.

    이걸 시도하고 이것이 어떻게되는지 말해줘.

  3. from https://stackoverflow.com/questions/31476335/hive-1-1-0-alter-table-partition-type-from-int-to-string by cc-by-sa and MIT license