복붙노트

[HADOOP] 하이브에서 파티션 컬럼으로 정상 열을 변환

HADOOP

하이브에서 파티션 컬럼으로 정상 열을 변환

내가 3 열이있는 테이블이 있습니다. 지금은 파티션 컬럼과 컬럼 중 하나를 수정해야합니다. 가능성이 있습니까? 그렇지 않으면, 우리는 어떻게 기존의 테이블에 파티션을 추가 할 수 있습니다. 나는 아래의 구문을 사용 : 테이블 T1 (이노 INT, ENAME 문자열) '\의 t'종료 행 형식 구분 필드를 생성; 로드 데이터 테이블 (T1)에 로컬 '/....path/'; 테이블 T1 파티션 (P1 = '인도')를 추가 변경;

나는 오류를 얻고있다 .........

하나는 기존의 테이블에 파티션을 추가하는 방법을 알고 ...?

미리 감사드립니다.

해결법

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

    1.나는이 직접 가능하다고 생각하지 않습니다. 하이브는 파티션을 추가하는 새로운 디렉토리 구조를 부과하기 때문에 완전히 재 배열 및 HDFS의 파일을 분할해야합니다.

    나는이 직접 가능하다고 생각하지 않습니다. 하이브는 파티션을 추가하는 새로운 디렉토리 구조를 부과하기 때문에 완전히 재 배열 및 HDFS의 파일을 분할해야합니다.

    내가 제안 당신이 단순히 원하는 스키마 및 파티션에 새 테이블을 생성하고, 두 번째로 처음부터 모든 것을 삽입합니다.

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

    2.나는 파티션 테이블의 기존 열을 변환 할 수있는 방법이 없다 생각합니다. 당신은 당신이 이미했던 것처럼 명령을 ALTER 테이블 사용 파티션을 추가합니다. 당신이 외부 테이블을 처리하는 경우뿐만 아니라 위치 필드를 지정합니다. 나는 파티션 관리 테이블에 대한 ALTER 명령을 사용하여 추가 할 수 있는지 모르겠습니다.

    나는 파티션 테이블의 기존 열을 변환 할 수있는 방법이 없다 생각합니다. 당신은 당신이 이미했던 것처럼 명령을 ALTER 테이블 사용 파티션을 추가합니다. 당신이 외부 테이블을 처리하는 경우뿐만 아니라 위치 필드를 지정합니다. 나는 파티션 관리 테이블에 대한 ALTER 명령을 사용하여 추가 할 수 있는지 모르겠습니다.

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

    3.당신은 생성 된 테이블에 파티션을 추가 할 수 없습니다. 하지만 당신은 다음과 같이 뭔가를 할 수 있습니다. 새 테이블을 만들고이 새 하나에 이전 테이블에서 데이터를 삽입합니다.

    당신은 생성 된 테이블에 파티션을 추가 할 수 없습니다. 하지만 당신은 다음과 같이 뭔가를 할 수 있습니다. 새 테이블을 만들고이 새 하나에 이전 테이블에서 데이터를 삽입합니다.

    /*Original table structure*/
    CREATE  TABLE original_table(
        c1 string,
        c2 string,
        c3 string)
    STORED AS ORC;
    
    
    
    /*Partitioned table structure*/
    CREATE  TABLE partitioned_table(
        c1 string,
        c2 string)
    partitioned by (c3 string)  
    STORED AS ORC;
    
    
    /*load data from original_table to partitioned_table*/
    insert into table partitioned_table partition(c3)     select c1,c2,c3 from  original_table;
    
    
    /*remae original_table to old_table. You can just drop it if you want it*/
    ALTER TABLE original_table RENAME TO old_table;
    
    
    /*rename partitioned_table to original_table*/
    ALTER TABLE partitioned_table RENAME TO original_table; 
    
  4. from https://stackoverflow.com/questions/12584143/convert-normal-column-as-partition-column-in-hive by cc-by-sa and MIT license