hive 外部表和内部表 区别

未被external修饰的是内部表(managed table),被external修饰的为外部表(external table);
区别:
内部表数据由Hive自身管理,外部表数据由HDFS管理;
内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定;
删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;
对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)

说简单点:

内部表:
本地导入数据到hive中: [建表,只建立元数据信息+hdfs hive目录下给一个表名文件夹,里面没有数据]
create table aaa(name string)
row format delimited fields terminated by ‘\n’;

–从本地导入数据:相当于将path数据 hadoop fs -put /hive/warehouse/test.db/aaa
load data local inpath ‘/home/test/111.txt’
into table aaa;

–外部表
hadoop fs -mkdir /data/ext
hadoop fs -cp /data/111 /data/ext

create external table a1(name string)
row format delimited fields terminated by ‘\n’
stored as textfile
location ‘/data/ext’;

–在hive/warehouse/test.db下没有a1这个文件夹
–但是能表a1查询到数据
select * from a1 limit 3;

–外部数据源 /data/ext/111.txt 数据未发生变化
–删除表:
drop table a1;
–发现,数据元信息被删除了,但是在hdfs路径/data/ext下的数据还存在。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值