【Hive】内外部表的创建和区别

内部表(管理表)

  • 默认创建的表都是所谓的管理表,有时也被称为内部表。因为这种表,Hive 会(或多或 少地)控制着数据的生命周期。 Hive 默认情况下会将这些表的数据存储在由配置项hive.metastore.warehouse.dir(例如,/user/hive/warehouse)所定义的目录的子目录下。 当我们删除一个管理表时,Hive 也会删除这个表中数据。管理表不适合和其他工具共享数据。

  • 实例操作
    原始数据

在这里插入图片描述

普通创建表

create table if not exists student( id int, name string
)
row format delimited fields terminated by '\t' stored as textfile
location '/user/hive/warehouse/student';

根据查询结果创建表(查询的结果会添加到新创建的表中)

create table if not exists student2 as select id, name from student; 

根据已经存在的表结构创建表

create table if not exists student3 like student; 

查询表的类型

hive (default)> desc formatted student2;
 Table Type:	MANAGED_TABLE

外部表

  • 因为表是外部表,所以 Hive 并非认为其完全拥有这份数据。删除该表并不会删除掉这 份数据,不过描述表的元数据信息会被删除掉。

  • 案例实操
    数据
    在这里插入图片描述
    建表语句,创建外部表 创建

create external table if not exists dept( deptno int,
dname string, loc int
)
row format delimited fields terminated by '\t';

创建员工表

create external table if not exists emp( empno int,
ename string, job string, mgr int,
hiredate string, sal double,
comm double, deptno int)
row format delimited fields terminated by '\t';

查看表格式化数据

hive (default)> desc formatted dept;
 Table Type:	EXTERNAL_TABLE

管理表与外部表的互相转换

修改内部表 student2 为外部表

alter table student2 set tblproperties('EXTERNAL'='TRUE'); 

修改外部表 student2 为内部表

alter table student2 set tblproperties('EXTERNAL'='FALSE'); 

注意:(‘EXTERNAL’=‘TRUE’)和(‘EXTERNAL’=‘FALSE’)为固定写法,区分大小写!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值