복붙노트

[HADOOP] 동적 파티션 + HIVE에서의 CREATE AS

HADOOP

동적 파티션 + HIVE에서의 CREATE AS

HiveCLI에서 CREATE AS 및 동적 파티셔닝을 사용하여 다른 테이블에서 새 테이블을 만들려고합니다. 이 예제가있는 Hive 공식 wiki에서 배우고 있습니다.

 CREATE TABLE T (key int, value string) 
 PARTITIONED BY (ds string, hr int) AS
 SELECT key, value, ds, hr+1 hr1 
   FROM srcpart 
   WHERE ds is not null 
   And hr>10;

그러나 나는이 오류를 받았다.

출처 : https://cwiki.apache.org/confluence/display/Hive/DynamicPartitions#DynamicPartitions-Syntax

해결법

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

    1.목표 테이블의 전체 스키마를 이미 알고 있으므로 먼저 테이블을 작성하고 LOAD DATA 명령으로 채우십시오.

    목표 테이블의 전체 스키마를 이미 알고 있으므로 먼저 테이블을 작성하고 LOAD DATA 명령으로 채우십시오.

    SET hive.exec.dynamic.partition.mode=nonstrict;
    
    CREATE TABLE T (key int, value string) 
    PARTITIONED BY (ds string, hr int);
    
    INSERT OVERWRITE TABLE T PARTITION(ds, hr) 
    SELECT key, value, ds, hr+1 AS hr 
       FROM srcpart 
       WHERE ds is not null 
       And hr>10;
    

    주 : 전체 동적 파티션 삽입을 수행 중이기 때문에 set 명령이 필요합니다.

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

    2.

    SET hive.exec.dynamic.partition.mode=nonstrict;
    
    CREATE TABLE T (key int, value string) 
    PARTITIONED BY (ds string, hr int);
    
    INSERT OVERWRITE TABLE T PARTITION(ds, hr) 
    SELECT key, value, ds, hr+1 AS hr 
    FROM srcpart 
    WHERE ds is not null 
          And hr>10;
    

    위의 코드에서 Create 문 대신 다음을 사용합니다. CREATE TABLE T srcpart와 같습니다.

    파티셔닝이 비슷한 경우.

  3. from https://stackoverflow.com/questions/21477855/dynamic-partitioning-create-as-on-hive by cc-by-sa and MIT license