hive入门之内部表和外部表<2>

本文深入解析Hive中内部表与外部表的创建、区别及转换方法。内部表由Hive完全管理,删除时数据一同消失;外部表数据独立于Hive,删除仅移除元数据。通过实例展示如何通过ALTER TABLE语句实现两者的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.hive的内部表和外部表

  • 内部表:

使用建表语句:

create table if not exists student2(
id int, name string
)
row format delimited fields terminated by '\t'
stored as textfile;

在这里插入图片描述使用desc查看表结构:
在这里插入图片描述

  • 外部表:

使用建表语句:

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

或者不指定location(注意:如果路径是在/user/hive/warehouse这个默认的目录下面还是会被指定为内部表),加上external 关键字即可:

create external  table if not exists student3(
id int, name string
)
row format delimited fields terminated by '\t'
stored as textfile;

在这里插入图片描述在这里插入图片描述
查看表的详细结构:
在这里插入图片描述

  • 内部表和外部表的区别:

因为表是外部表,所以Hive并非认为其完全拥有这份数据。删除该表并不会删除掉这份数据,不过描述表的元数据信息会被删除掉。也就是说,在删除内部表的时候其数据和表结构全部没了,而外部表还会保存数据在hdfs上面。

  • 内部表和外部表的转换

将内部表转化为外部表(后面的false改为true就是将外部表改为内部表):

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

其中,external就是附加的意思,附加表为true也就是设置为外部表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值