1. 程式人生 > >Hive Managed Table與 External Table區別

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部分保留