hive内部表与外部表区别
1.在Hive里面创建一个表:
hive> create table wyp(id int,
> name string,
> age int,
> tele string)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY '\t'
> STORED AS TEXTFILE;
OK
Time taken: 0.759 seconds
2.这样我们就在Hive里面创建了一张普通的表,现在给这个表导入数据:
load data local inpath '/home/wyp/data/wyp.txt' into table wyp;
3.创建外部表多了external关键字说明以及location ‘/home/wyp/external’
hive> create external table exter_table(
> id int,
> name string,
> age int,
> tel string)
> location '/home/wyp/external';
OK
Time taken: 0.098 seconds
创建外部表,需要在创建表的时候加上external关键字,同时指定外部表存放数据的路径(当然,你也可以不指定外部表的存放路径,这样Hive将 在HDFS上的/user/hive/warehouse/文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里)
外部表导入数据和内部表一样:load data local inpath '/home/wyp/data/wyp.txt' into table exter_table;
4.和上面的导入数据到表一样,将本地的数据导入到外部表,数据也是从本地文件系统复制到HDFS中/home/hdfs/wyp.txt文件中,但是,最后 数据不是移动到外部表的/user/hive/warehouse/exter_table文件夹中(除非你创建表的时候没有指定数据的存放路径)!大家 可以去HDFS上看看!对于外部表,数据是被移动到创建表时指定的目录(本例是存放在/home/wyp/external文件夹中)!
5.内部表删除
hive> drop table wyp;
Moved: 'hdfs://mycluster/user/hive/warehouse/wyp' to
trash at: hdfs://mycluster/user/hdfs/.Trash/Current
OK
Time taken: 2.503 seconds
如果你要删除外部表:drop table exter_table;
hive> drop table exter_table;
OK
Time taken: 0.093 seconds
和上面删除Hive的表对比可以发现,没有输出将数据从一个地方移到任一个地方!那是不是删除外部表的的时候数据直接被删除掉呢?答案不是这样的,你会发现删除外部表的时候,数据并没有被删除,而只是删除了元数据,这是和删除表的数据完全不一样的
总结:
1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的,而表则不一样;
2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!
那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!
hive内部表与外部表区别的更多相关文章
- hive 内部表和外部表的区别和理解
1. 内部表 create table test (name string , age string) location '/input/table_data'; 注:hive默认创建的是内部表 此时 ...
- hive 内部表与外部表的区别
hive 内部表: hive> create table soyo55(name STRING,addr STRING,money STRING) row format delimited fi ...
- hive内部表与外部表区别详细介绍
问题导读:1.创建内部表与外部表的区别是什么?2.external关键字的作用是什么?3.外部表与内部表的区别是什么?4.删除表的时候,内部表与外部表有什么区别?5.load data local i ...
- Hive内部表与外部表的区别
1.未被external修饰的是内部表[managed table],被external修饰的为外部表[external table]. 2.内部表数据由Hive自身管理,外部表数据由HDFS管理. ...
- 【转】Hive内部表、外部表
hive内部表.外部表区别自不用说,可实际用的时候还是要小心. 1. 内部表: create table tt (name string , age string) location '/input/ ...
- hive内部表、外部表
hive内部表.外部表区别自不用说,可实际用的时候还是要小心. Hive的数据分为表数据和元数据,表数据是Hive中表格(table)具有的数据:而元数据是用来存储表的名字,表的列和分区及其属性,表的 ...
- 一起学Hive——创建内部表、外部表、分区表和分桶表及导入数据
Hive本身并不存储数据,而是将数据存储在Hadoop的HDFS中,表名对应HDFS中的目录/文件.根据数据的不同存储方式,将Hive表分为外部表.内部表.分区表和分桶表四种数据模型.每种数据模型各有 ...
- hive内部表、外部表、分区
hive内部表.外部表.分区 内部表(managed table) 默认创建的是内部表(managed table),存储位置在hive.metastore.warehouse.dir设置,默认位置是 ...
- Hive创建内部表、外部表
使用hive需要hive环境 启动Hive 进入HIVE_HOME/bin,启动hive ./hive 内部表 建表 hive> create table fz > (id int,nam ...
- hive表与外部表的区别
相信很多用户都用过关系型数据库,我们可以在关系型数据库里面创建表(create table),这里要讨论的表和关系型数据库中的表在概念上很类似.我们可以用下面的语句在Hive里面创建一个表: hive ...
随机推荐
- 现在不使用ZeroClipboard我们也能实现复制功能(转)
现在不使用ZeroClipboard我们也能实现 首先,我们保证页面结构不变,但不在引入ZeroClipboard插件: 1 <input type="text" name= ...
- 字符串转到js对象
var obj = (new Function("return " + str))();
- DeepFace--Facebook的人脸识别(转)
DeepFace基本框架 人脸识别的基本流程是: detect -> aligh -> represent -> classify 人脸对齐流程 分为如下几步: a. 人脸检测,使用 ...
- ???????????? no permissions
1.一手鞋地址 google http://developer.android.com/tools/device.html 我处理的方法如下: 我的问题: android的版卡 在Ubuntu12.0 ...
- POJ 3252 Round Numbers(数位dp)
题意:给定区间[l,r],l < r ,求区间中满足条件的正整数的个数:二进制表示下0的个数不少于1的个数. 分析:f(x)表示<=x时满足条件的数的个数,所求问题即为f(r)-f(l-1 ...
- linux和window下mkdir函数
通过WIN32宏进行判断 window下mkdir函数 #include<direct.h> int _mkdir( const char *dirname ); linux下 ...
- POJ1265——Area(Pick定理+多边形面积)
Area DescriptionBeing well known for its highly innovative products, Merck would definitely be a goo ...
- CentOS7安装mysql-server
安装ossec时需要使用到mysql-server,直接安装报错: [root@ossec-server ~]# yum install mysql-server Loaded plugins: fa ...
- Android ImageView(纯java)
import android.app.Activity; import android.graphics.*; import android.graphics.drawable.*; import a ...
- JS动画 | 用TweenMax实现收集水滴效果
之前在CodePen上接触了TweenMax, 被它能做到的酷炫效果震撼了. (文末放了5个GSAP的效果GIF) 最近要做一个"收集水滴"的动效, 于是就试用了一下TweenMa ...