Hive:Managed Tables和External Tables的测试

1.声明

当前内容主要用于本人学习和复习,当前内容主要为Managed Table和External Table的测试

2.创建两个表

1.创建Managed Table,managed_table

CREATE TABLE IF NOT EXISTS managed_table (
id STRING,
name STRING,
age int
)
COMMENT '一个一般表' 
LOCATION '/user/hive/warehouse/manageTable'; 

在这里插入图片描述

2.创建External Table,external_table

create external table if not exists external_table(
id STRING,
name STRING,
age int
)
COMMENT '一个外部表'
LOCATION '/user/hive/warehouse/externalTable';

在这里插入图片描述

HDFS中的结果
在这里插入图片描述

这个LOCATION就是定制HDFS中数据库文件的名称(不指定默认按照当前数据库表的名称来创建)

3.测试添加数据

insert into managed_table values('1001','admin',10);
insert into managed_table values('1002','guest',12);
insert into external_table values('1001','admin',10);
insert into external_table values('1002','guest',12);
insert into external_table values('1002','guest',12);

HDFS中的managed_table
在这里插入图片描述

HDFS中的external_table
在这里插入图片描述
每次添加数据都会创建一个copy的文件

4.查看支持的操作

在这里插入图片描述
发现似乎没有delete和update操作

尝试删除某条数据:

delete from  managed_table where id='1002';

在这里插入图片描述
说执行update和delete请在事务管理中执行,当前的不支持该操作(非事务模式下不支持该操作)

5.查看删除表的区别

drop table if exists managed_table;
drop table if exists external_table;

在这里插入图片描述
在这里插入图片描述
查看HDFS中的文件夹
在这里插入图片描述
发现只有当前的managedTable被删除掉了,而externalTable保留下来了!

查看其中的数据是否存在
在这里插入图片描述

所以External Table(就是外表),是不受当前的Hive管理的表,无法被Hive删除数据

6.尝试加载外表(上面未删除的external_table)

create external table if not exists external_table(
id STRING,
name STRING,
age int
)
COMMENT '一个外部表'
LOCATION '/user/hive/warehouse/externalTable';

在这里插入图片描述

发现可以直接加载数据,并且加载完后里面还是有数据,这表明,当前的这个External的表可以随便共享出去,只需要加载即可,Hive没有对该表进行drop的权利,只能通过HDFS来删除,该表可以复制到其他的地方然后用相同的方法加载,就可以有数据了

7.总结

1.Managed Tables就是指可以被Hive管理的表(可以被Hive执行drop数据的结果),External Tables是不被Hive管理的表(不可以通过drop删除数据,可以通过创建表时指定LOCATION直接加载表和数据)

2.当前的Hive中好像没有提供delete和update操作,但是执行的时候却提示可以通过事务进行update和delete操作

3.创建表时指定的LOCATION,就表示表存储的HDFS位置

以上纯属个人见解,如有问题请联系本人!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值