(8)hadoop学习——内部表和外部表

本文介绍了Hive中内部表与外部表的区别,包括建表方式、数据存储位置及删除行为的不同。通过实例展示了如何创建外部表并加载数据,解释了外部表在truncate和drop操作下的行为。

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

hive默认建表方式就是建立内部表。

建外部表语句:

create external table table_exter(
id int,
name string,
age int,
tel string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
stored as textfile
location '/user/hive/warehouse/gbd_dm_qydb_safe.db/test';

相应的txt文件:

1|xiaoming|24|shanghai

使用load命令装载进表:load data local inpath 'table_exter.txt' overwrite into table table_exter;

查询一下内容:



可以看到创建外部表需要关键词external,来表示这个表是外部表。

尝试一下truncate操作:


发现报了个错,这是因为外部表是不能truncate的,究其原因是因为外部表并不是由它自己管理的。

再尝试一下drop操作:


按理来说,drop之后相应的hdfs上数据仓库下的文件也会删除,但其实不然:


这张图是drop前和drop后的,可以看到没有任何变化。外部表只是删除了元数据,并没有真正删除表内的数据。


结论:

Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变,相当于只是指向hdfs上某个地方数据的一个表。

在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值