Hive Managed Table与 External Table区别

在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
);

说明:

  1. Managed Table和External Table在建表时都可以指定data的location,也可以不指定,不指定时会使用默认的location。默认location通过$HIVE_HOME/conf/hive-site.xml中的hive.metastore.warehouse.dir设置
  2. 表建好后同样可以变更表的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部分保留

猜你喜欢

转载自blog.csdn.net/qq_43688472/article/details/85984985