内外表的判断
执行以下命令查看tableType的值,内表为MANAGED_TABLE,外表为EXTERNAL_TABLE;
DESCRIBE EXTENDED table_name;
示例:
内外表的相互转化
修改表的EXTERNAL属性,如下:
alter table table_name set TBLPROPERTIES ('EXTERNAL'='TRUE'); //内部表转外部表
alter table table_name set TBLPROPERTIES ('EXTERNAL'='FALSE'); //外部表转内部表
内表 VS 外表
最本质区别:对于内表(管理表),HIVE控制着整个表的生命周期;对于外表,HIVE没法强管控表数据;因此,内表支持很多特性,而外表不支持,具体如下:
- ARCHIVE/UNARCHIVE/TRUNCATE/MERGE/CONCATENATE等操作仅作用于内表;
- 执行DROP操作时,对于内表,元数据和表数据都被删除;对于外表,仅元数据被删除(无法管控表数据);
- 事务特性仅作用于内表;
参考: