hive 内部表和外部表的区别和理解
来源:互联网 发布:商标域名价格 编辑:程序博客网 时间:2024/05/20 06:41
转载:http://www.cnblogs.com/qiaoyihang/p/6225151.html
1. 内部表
create table test (name string , age string) location '/input/table_data';
load data inpath '/input/data' into table test ;
会将hdfs上的/input/data目录下的数据转移到/input/table_data目录下。删除test表后,会将test表的数据和元数据信息全部删除,即最后/input/table_data下无数据,当然/input/data下再上一步已经没有了数据!
如果创建内部表时没有指定location,就会在/user/Hive/warehouse/下新建一个表目录,其余情况同上。
注:load data会转移数据
2. 外部表
create external table etest (name string , age string);
会在/user/hive/warehouse/新建一个表目录et
load data inpath '/input/edata' into table etest;
把hdfs上/input/edata/下的数据转到/user/hive/warehouse/etest下,删除这个外部表后,/user/hive/warehouse/etest下的数据不会删除,但是/input/edata/下的数据在上一步load后已经没有了!数据的位置发生了变化!
本质是load一个hdfs上的数据时会转移数据!
总结一下Hive中表与外部表的区别:
1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!而表则将数据存储于设置位置/usr/hive/warehouse。
2、在删除内部表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的。
所以,在大多数情况内部表和外部表没有太多的区别,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表较为好。因为外部表只删除表不删除数据,所以采用外部表。
外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。
那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!
- hive 内部表和外部表的区别和理解
- hive 内部表和外部表的区别和理解
- hive 内部表和外部表的区别和理解
- hive 内部表和外部表的区别和理解
- Hive总结(三)内部表和外部表的区别
- Hive内部表和外部表的区别
- hive中内部表和外部表的区别
- Hive内部表和外部表的区别
- Hive内部表和外部表的区别详解
- hive内部表和外部表的区别
- HIVE的内部表和外部表
- Hive 之 内部表和外部表区别
- hive外部表和内部表
- hive外部表和内部表
- Hive内部表和外部表
- hive中内部表和外部表
- hive内部表和外部表
- hive 内部表 和 外部表
- spidev
- 网络连接判断
- [Linux] 记录一次出来inode告警问题
- 工作中使用过的sql
- [python笔记]for循环中循环变量迭代问题
- hive 内部表和外部表的区别和理解
- hidesBottomBarWhenPushed使用时机
- PAT考试乙级1013(C语言实现)
- Java8 Comparator
- 第一章 SpringCloud概要
- 第三章、网络访问层
- nginx部署
- 从N个数里面,随机抽取M个数(可以用作抽奖随机用户)
- 从上往下打印二叉树