Apache Hive

HIVE SQL - EXCHANGE PARTITION

김은열 2020. 10. 28. 10:57

 

 

EXCHANGE PARTITION 명령은 소스 테이블에서 대상 테이블로 파티션을 이동하고 각 테이블의 메타 데이터를 변경합니다. 

명령이 실행되면 HDFS에서 원본 테이블의 파티션 폴더 이름이 변경되어 대상 테이블의 파티션 폴더로 이동합니다. Hive 메타 스토어가 업데이트되어 소스 및 대상 테이블의 메타 데이터가 그에 따라 변경됩니다. 파티션 속성은 전체 또는 부분적으로 지정할 수 있습니다.

 

Constraints

  • 대상 테이블에는 교환 파티션을 포함 할 수 없습니다.

  • 인덱스가 존재하면 작업이 실패합니다

  • Exchange 파티션은 소스 또는 대상으로 트랜잭션 테이블을 사용할 수 없습니다. 또는 LOAD DATA 또는 INSERT OVERWRITE 명령을 사용하여 트랜잭션 테이블간에 파티션을 이동합니다.

  • 소스 테이블 이름과 대상 테이블 이름이 동일한 테이블 스키마를 가지고 있어야합니다. 스키마가 다른 경우, 다음과 같이 예외처리 됩니다.

         테이블에 다른 스키마가 있습니다. 그 파티션은 교환 할 수 없습니다

 

Syntax

ALTER TABLE <dest_table> EXCHANGE PARTITION (<[partial] partition spec>) WITH TABLE <src_table>


Example Usage – 기본

--Create two tables, partitioned by ds

CREATE TABLE T1(a string, b string) PARTITIONED BY (ds string);

CREATE TABLE T2(a string, b string) PARTITIONED BY (ds string);

ALTER TABLE T1 ADD PARTITION (ds='1');



--Move partition from T1 to T2

ALTER TABLE T2 EXCHANGE PARTITION (ds='1') WITH TABLE T1;

 

Example Usage 부분 파티션 속성(여러 파티션 교환)

--Create two tables with multiple partition columns.

CREATE TABLE T1 (a string, b string) PARTITIONED BY (ds string, hr string);

CREATE TABLE T2 (a string, b string) PARTITIONED BY (ds string, hr string);

ALTER TABLE T1 ADD PARTITION (ds = '1', hr = '00');

ALTER TABLE T1 ADD PARTITION (ds = '1', hr = '01');

ALTER TABLE T1 ADD PARTITION (ds = '1', hr = '03');



--Alter the table, moving all the three partitions data where ds='1' from table T1 to table T2 (ds=1)

ALTER TABLE T2 EXCHANGE PARTITION (ds='1') WITH TABLE T1;


Example Usage
 다중 파티션 열이있는 파티션 속성 새로 생성 된 파티션 T2 (ds = 1)에 대해 T1의 스키마가 사용됩니 다. T1의 모든 파티션이 생성되거나 전체 작업이 실패합니다. T1의 모든 파티션이 삭제됩니다.

-- Create two tables with multiple partition columns.

CREATE TABLE T1 (a int) PARTITIONED BY (d1 int, d2 int);

CREATE TABLE T2 (a int) PARTITIONED BY (d1 int, d2 int);

ALTER TABLE T1 ADD PARTITION (d1=1, d2=2);



-- Alter the table, moving partition data d1=1, d2=2 from table T1 to table T2

ALTER TABLE T2 EXCHANGE PARTITION (d1 = 1, d2 = 2) WITH TABLE T1;

 


출처 :
cwiki.apache.org(HIVE공식문서)