(8)hadoop学习——内部表和外部表
2017-05-16 20:18
134 查看
hive默认建表方式就是建立内部表。
建外部表语句:
相应的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上某个地方数据的一个表。
建外部表语句:
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上某个地方数据的一个表。
在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
相关文章推荐
- Hadoop学习笔记(十八)---Hive内部表,外部表,分区表,桶表
- Hadoop编程学习(三):namenode内部关键数据结构介绍
- SPRING.NET 1.3.2 学习7--使用外部对象和内部对象
- windows下scrapy框架学习笔记—'scrapy' 不是内部或外部命令
- Tomcat学习笔记 - 错误日志 - NetBeans配置tomcat出错情况总结 -- 部署错误: 启动 Tomcat 失败。-- '127.0.0.1' 不是内部或外部命令,也不是可运行的程序
- Swift学习笔记(三十)——函数的内部参数名和外部参数名
- [C学习]内部函数与外部函数
- Deep Learning(深度学习)之(九)词向量的内部任务评价和外部任务评价方法
- openGl学习之判定点在三角形的内部还是外部
- Node.js学习笔记【1】入门(服务器JS、函数式编程、阻塞与非阻塞、回调、事件、内部和外部模块)
- Hive学习笔记(四) 内部表与外部表
- Hadoop学习笔记(六):Hadoop读写文件时内部工作机制
- Hadoop学习笔记(六):Hadoop读写文件时内部工作机制
- Hadoop学习笔记(六):Hadoop读写文件时内部工作机制
- Hadoop 从零开始学习系列-hive与hbase外部关联表建立及数据导入
- java学习笔记之内部与外部类(要点)
- 今天学习C#,在dos下用csc命令编译,提示“csc不是内部或外部命令,也不是可运行的程序... ”
- Android开发学习笔记(12):Android读取内部以及外部资源文件(更新中...)
- Hadoop学习笔记(六):Hadoop读写文件时内部工作机制
- C语言学习笔记:14_内部函数和外部函数