区别
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)
版权声明:《 Hive 外部表 和 内部表 的区别及介绍 》为明妃原创文章,转载请注明出处!
最后编辑:2020-1-6 07:01:35