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
반응형