달나라 노트

Hive : Partition table 만들기, partition에 insert하기 본문

SQL/Apache Hive

Hive : Partition table 만들기, partition에 insert하기

CosmosProject 2024. 8. 22. 19:19
728x90
반응형

 

 

 

Hive에서 partition table은 아래와 같이 만들 수 있습니다.

 

SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;


create table test_schema.test_table (
    col1        bigint,
    col2        string,
    col3        float,
    col4        string,
    col5        timestamp
)
partitioned by (
    col6        bigint,
    col7        bigint
)
;


insert into test_schema.test_table partition (col6, col7)
select  col1
        , col2
        , col3
        , col4
        , col5
        , col6
        , col7
from test_schema.temp_table
;

 

 

 

 

일단 먼저 아래처럼 dynamic partition을 true로 해야합니다.

dynamic partition은 partition의 기준이 되는 값을 알아서 자동으로 설정해주는 것입니다.

SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;

 

 

 

 

 

그리고 다음과 같이 partition table을 생성합니다.

주의할 것은 partition이 아닌 컬럼은 create table (~~) 부분에 쓰고

partition column이 될 컬럼은 partitioned by (~~) 부분에 써야한다는 것입니다.

create table test_schema.test_table (
    col1        bigint,
    col2        string,
    col3        float,
    col4        string,
    col5        timestamp
)
partitioned by (
    col6        bigint,
    col7        bigint
)
;

 

이렇게 되면 test_schema.test_table은

col1, col2, col3, col4, col5 라는 5개의 일반 column과

col6, col7 이라는 2개의 partition column을 가지게 됩니다.

총 7개의 column을 가진 테이블이 생성되는것이죠.

 

 

 

 

그리고 데이터를 삽입할 때에는 아래와 같이 합니다.

test_schema.test_table이라는 partition table에 test_schema.temp_table이라는 테이블의 데이터를 insert할 것입니다.

그렇기에 partition (col6,  col7) 이라는 옵션을 명시해주며 partition 컬럼을 지정해준 채로 insert를 합니다.

 

insert into test_schema.test_table partition (col6, col7)
select  col1
        , col2
        , col3
        , col4
        , col5
        , col6
        , col7
from test_schema.temp_table
;

 

 

 

 

 

728x90
반응형
Comments