MANAGED

hdfs의 데이터를 Hive에서 관리한다는 의미를 가지고 있다.

그래서 drop table 질의를 하는 경우 hdfs의 데이터도 사라지게 된다.

테이블 생성시 옵션을 따로 주지 않으면 매니지드 테이블이 생성된다. 세션이 종료되어도 테이블의 데이터와 파일은 유지 된다. 테이블을 DROP 하면 파일도 함께 삭제 된다.

EXTERNAL

hdfs의 데이터와 hive 테이블과 심볼릭 링크가 걸린다고 생각하면 된다.

그래서 drop table 질의를 하는 경우에도 hdfs의 데이터는 유지

EXTERNAL 옵션은 매니지드 테이블과 파일 삭제 정책을 제외하고 동일하다. 익스터널 테이블은 DROP하면 파일은 그대로 유지된다. 사용자의 실수로 인한 파일 삭제를 방지하기 위해서 EXTERNAL 테이블로 관리하는 것이 좋다.

TEMPORARY

TEMPORARY옵션은 현재 세션에서만 사용하는 테이블을 생성 할 수 있다.현재 세션이 종료되면 제거되기 때문에 임시 테이블 생성에 사용하면 좋다.

실습**)**

#EC2
#hdfs경로의 data폴더 아래에 파일 저장

ubuntu@nn1:~$ hdfs dfs -put train1000.csv /user/data/

Untitled

#HIVE CLI
CREATE EXTERNAL TABLE ex_table (
key date                      
,fare_amount float
,pickup_datetime string
,pickup_longitude int
,pickup_latitude int
,dropoff_longitude int
,dropoff_latitude int
,passenger_count int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','                        
LINES TERMINATED BY '\\n'                        
STORED AS TEXTFILE
**LOCATION '/user/data';**

#TBLPROPERTIES ('skip.header.line.count'='1') ->에러 발생해서 제거

select * from ex_table limit 10;
show create table ex_table;

Untitled