Hive 外部表 和 内部表 的区别及介绍

区别

X 外部表 内部表(管理表)
创表关键字 需要加 external 不需要加
表被删除时 数据不会被删除 数据会被删除

创建表的区别

在创建外部表时 需要加 external 关键字

create external table stud (
    id int,
    name string
    )
    row format delimited 
    fields terminated by '\t';

表被删除时

表被删除时 外部表 使用 show tables; 查询不到,但数据还在。如果再按照原来的表格式创建表,内容会自动加载到表里。

内部表被删除时,数据会跟着被删除。

使用场景

当有一份数据,可能使用它来分析的不止一个部门,还会有许多地方共享这份数据,所以不能在我分析完删除时,把元数据也删除了

外部表与内部表的相互转换

内部表改为外部表:alter table 表名 set tblproperties('EXTERNAL'='TRUE');

外部表改为内部表:alter table 表名 set tblproperties('EXTERNAL'='FLASE');

注意 后面的 tblproperties('EXTERNAL'='布尔值'); 是一定的,引号是单引号,布尔值要大写

查看表的详细信息

查询语句 desc formatted 表名

hive> desc formatted stud;
OK
# col_name                data_type               comment             

id                      int                                         
name                    string                                      

# Detailed Table Information          
Database:               defaul # 该表所在的数据库            
Owner:                  root   # 该表的用户     
CreateTime:             Mon Jan 06 11:37:37 CST 2020     
LastAccessTime:         UNKNOWN                  
Protect Mode:           None                     
Retention:              0                        
Location:               hdfs://192.168.176.65:9000/user/hive/warehouse/stud     
Table Type:             MANAGED_TABLE # 说明表示管理表(内部表)       
Table Parameters:          
    COLUMN_STATS_ACCURATE    true                
    numFiles                1                   
    totalSize               21                  
    transient_lastDdlTime    1578281909          

# Storage Information          
SerDe Library:          org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe     
InputFormat:            org.apache.hadoop.mapred.TextInputFormat     
OutputFormat:           org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     
Compressed:             No                       
Num Buckets:            -1                       
Bucket Columns:         []                       
Sort Columns:           []                       
Storage Desc Params:          
    field.delim             \t                  
    serialization.format    \t                  
Time taken: 0.104 seconds, Fetched: 31 row(s)
发表评论 / Comment

用心评论~