개요
Hive에서 External Table과 Internal Table의 차이점에 대해 파악하고, 실습을 진행해 보겠습니다.
Internal Table
Internal Table은 Manged Table이라고 하며, Table 생성 시 따로 Option을 주지 않으면 기본 저장 위치 ‘hive.metastore.warehouse.dir’에 정의한 하위 디렉터리를 만들어서 Data를 저장합니다.
ex) hdfs:///user/hive/warehouse/{DB명}.db/{Table 명}
Internal Table은 Drop 시에 Table의 Data 및 MetaData 또한 완전히 삭제되므로 주의하여야 합니다. 세션이 종료 되어도 Table의 Data와 파일은 유지 됩니다.
실습
shakespeare_wc Table 생성
hive> CREATE TABLE IF NOT EXISTS shakespeare_wc (
word STRING,
count INT
)
ROW FORMAT
DELIMITED FIELDS TERMINATED BY '\t';
* IF NOT EXISTS
IF NOT EXISTS Option을 사용해서 Table을 생성하면 하위 디렉토리가 생성되지 않습니다.
shakespeare_wc Table에 Data Load
hive> LOAD DATA LOCAL INPATH '/home/ktnexr/data/' INTO TABLE shakespeare_wc;
다음과 같이 shakespeare_wc 하위 디렉토리에 Data가 Load 된 것을 확인 할 수 있습니다.
Drop Table
hive> DROP TABLE shakespeare_wc;
Table을 Drop 하면 다음과 같이 Table의 Data 및 Metadata가 모두 삭제 되는 것을 확인할 수 있습니다.
External Table
HDFS 상에서 존재하는 원본 Data를 기반으로 Table을 만들기 때문에 Schema만 정의 해주면 됩니다. External Table은 Table 생성 시에 Option으로 ‘EXTERNAL’을 붙여야 하고, Table을 Drop 하여도 Table의 Data 및 Metadata는 삭제되지 않습니다.
실습
External Table 생성
hive> CREATE EXTERNAL TABLE IF NOT EXISTS shakespeare_wc (
word STRING,
count INT
)
ROW FORMAT
DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/test/';
shakespeare_wc Table에 Data Load
hive> LOAD DATA LOCAL INPATH '/home/ktnexr/data/' INTO TABLE shakespeare_wc;
/test 하위 디렉토리에 Data가 Load 된 것을 확인할 수 있습니다.
Drop Table
hive> DROP TABLE shakespeare_wc;
보시는 것과 같이 shakespeare_wc EXTERNAL TABLE은 삭제 되었지만, Data와 Metadata는 그대로 존재하는 것을 확인할 수 있습니다.
'BigData > Hive' 카테고리의 다른 글
[Hive] Hive 란? (0) | 2022.09.20 |
---|