복붙노트

[HADOOP] Hive 파티션 컬럼 이름을 변경하는 방법

HADOOP

Hive 파티션 컬럼 이름을 변경하는 방법

(파티션 스펙이 아닌) 파티션 컬럼 이름을 변경해야하는데 하이브 위키 및 일부 Google 페이지에서 명령을 찾았습니다. 파티션 스펙을 변경하는 옵션을 찾을 수 있습니다.

예를 들어

/ table / country = 'US'에서 미국을 미국으로 변경할 수 있지만 국가를 대륙으로 변경하고 싶습니다.

테이블을 삭제하고 다시 생성하는 파티션 컬럼 이름을 변경하는 데 사용할 수있는 유일한 옵션이 있다고 생각합니다. 사용할 수있는 다른 옵션이 있습니까?

미리 감사드립니다.

해결법

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

    1.다음을 수행하여 메타 데이터의 열 이름을 변경할 수 있습니다. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ChangeColumnName/Type/Position/Comment

    다음을 수행하여 메타 데이터의 열 이름을 변경할 수 있습니다. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ChangeColumnName/Type/Position/Comment

    그러나 문서에 나와 있듯이 메타 데이터 만 변경됩니다. Hive 파티션은 이름 지정 패턴 columnName = spec을 사용하여 디렉토리로 구현됩니다. 따라서 "hadoop fs"명령을 사용하여 HDFS에서 해당 디렉토리의 이름을 변경해야합니다.

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

    2.간단한 스왑 방법을 사용하여 파티션 열을 변경했습니다.

    간단한 스왑 방법을 사용하여 파티션 열을 변경했습니다.

    참고 : mv 명령은 복사 시간을 줄여 한 위치에서 다른 위치로 파일을 이동합니다. 또는 원래 테이블에 데이터를 복사하기 위해 LOAD DATA INPATH를 사용할 수 있습니다.

  3. ==============================

    3.나중에 솔루션을 추가하십시오.

    나중에 솔루션을 추가하십시오.

  4. ==============================

    4.앞에서 말했듯이 파티션의 값을 매우 쉽게 바꿀 수 있습니다.

    앞에서 말했듯이 파티션의 값을 매우 쉽게 바꿀 수 있습니다.

    hive> ALTER TABLE test.usage PARTITION (country ='US') RENAME TO PARTITION (date='USA');
    

    나는 이것이 당신이 찾고있는 것이 아니라는 것을 압니다. 유감스럽게도 데이터가 국가별로 이미 분할되어 있으므로 테이블을 삭제하고 HDFS에서 데이터를 제거한 다음 대륙을 파티션으로 사용하여 데이터를 다시 삽입해야합니다.

    귀하의 경우에는 여러 파티션 레벨을 갖는 것이므로 폴더 구조가 다음과 같이 보일 것입니다.

    /path/to/the/data/continent='america'/country='usa'
    /path/to/the/data/continent='america'/country='mexico'
    /path/to/the/data/continent='europe'/country='spain'
    /path/to/the/data/continent='europe'/country='italy'
    ...
    

    그렇게하면 세분화 수준 (이 경우 대륙과 국가)별로 데이터를 쿼리 할 수 ​​있습니다.

  5. from https://stackoverflow.com/questions/32111036/how-to-alter-hive-partition-column-name by cc-by-sa and MIT license