在Hive上有两种类型的表,一种是Managed Table,另一种是External Table。
它俩的
主要区别在于
:当我们drop表时,Managed Table会同时删去data和meta data,而External Table只会删meta data。
一、Create Table
两者建表区别在于external关键字。
创建一个Managed Table:
create table xx_managed
(
a int
);
创建一个External Table:
create external table xx_external
(
a int
);
说明:
- Managed Table和External Table在建表时都可以指定data的location,也可以不指定,不指定时会使用默认的location。默认location通过$HIVE_HOME/conf/hive-site.xml中的hive.metastore.warehouse.dir设置
- 表建好后同样可以变更表的location属性,通过语句alter table xx_external set location '…'来变更
二、Drop Table
两者都是通过drop table xx来删表,但是Managed Table会同时删去data和meta data,而External Table只会删meta data。
三、使用场景
Managed Table
需要Hive全权负责Managed Table的data和meta data的生命周期管理时,即Table的data和meta data均有hive负责产出、修改和删除。
External Table
Table的data部分被hive以外的程序使用或者修改时,如MR Job处理log
Drop表时希望data部分保留