[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


각주
  1. 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어 원자성(Atomicity),일관성(Consistency),고립성(Isolation),지속성(Durability)