[HIVE] HIVE DML(LOAD/INSERT/UPDATE/DELETE/MERGE/IMPORT/EXPORT)
SQL과 비슷하기에 이해하는데 어려움은 많이 없는 DML(Data Manipulation Language)
DML은 앞서 포스팅했던 SELECT를 포함하여 LOAD/INSERT/UPDATE/DELETE/MERGE, IMPORT/EXPORT가 있다.
LOAD/INSERT/UPDATE/DELETE/MERGE
LOAD
- 데이터의 이동(로컬,HDFS 파일 -> 하이브테이블, 파티션테이블)
- 데이터의 이동(move datafiles) 원본데이터가 사라짐
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
INSERT OVERWRITE
- RDBMS와 다르게 INSERT OVERWRITE 지원
- 대상테이블, 파티션 테이블에 전에있던 데이터는 지워지고 기록됨
-- INSERT (데이터 추가 Hive 0.14.0 버전 이후 가능)
INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;
-- INSERT OVERWRITE
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;
UPDATE / DELETE / MERGE
- Hive는 로우 단위의 데이터의 운영은 지원하지 않았음
- Hive 0.13.0 버전 이후 ACID1의 지원으로 Transaction이 가능
- Hive 0.14.0 버전 이후 INSERT/ UPDATE / DELETE가 사용 가능
- Hive 2.2.0 버전 이후 MERGE도 사용 가능
- 사용법은 SQL과 같음
IMPORT/EXPORT
IMPORT
- import시 타켓위치에 똑같은 테이블명이 존재하면 에러남
IMPORT [[EXTERNAL] TABLE new_or_original_tablename [PARTITION (part_column="value"[, ...])]]
FROM 'source_path'
[LOCATION 'import_target_path']
EXPORT
- 메타데이터 정보도 함께 export
EXPORT TABLE tablename [PARTITION (part_column="value"[, ...])]
TO 'export_target_path' [ FOR replication('eventid') ]
References
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML
https://wikidocs.net/23562
각주
-
데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어 원자성(Atomicity),일관성(Consistency),고립성(Isolation),지속성(Durability) ↩