Hive关于内部表外部表以及分区表数据删除总结
来源:互联网 发布:linux 时区 -0400 编辑:程序博客网 时间:2024/06/05 19:18
1 内部表
创建内部表语句:
create table dog(name string,id int) rowformat delimited fields terminated by " ";
a:本地加载数据 拷贝本地数据到/user/hive/warehouse/的对应目录下,所谓的对应是指对应的数据库的对应表目录下。本地数据不会删除。如果重复执行加载同一个数据的话,不会覆盖,会对相同文件加上后缀_copy_1
load data local inpath '/home/daxin/jdata/dog' into table dog;
b:本地加载Hdfs上的数据,会将hdfs上的文件移动到/user/hive/warehouse/的对应目录下。
c:删除内部表:会删除/user/hive/warehouse/对应的数据
结论: 内部表的数据由hive自身负责管理
2 外部表
a:本地加载数据:拷贝本地数据到/user/hive/warehouse/的对应目录下,本地数据不会删除。
Create external tabledog(name string,id int) row format delimited fields terminated by "";
load data localinpath '/home/daxin/jdata/dog' intotable dog; //加载本地数据,本地数据还在
drop table dog; //发现/user/hive/warehouse/目录下依旧存在数据,所以没有跟随表删除
b:本地加载Hdfs上的数据
load data inpath '/dog' into table dog; //加载hdfs数据会将数据移动到/user/hive/warehouse/目录下
drop table dog; //发现/user/hive/warehouse/目录下依旧存在数据,所以没有跟随表删除
再次创建表:Create external tabledog(name string,id int) row format delimited fields terminated by "";不进行加载数据,直接执行查询,发现可以直接插上上次外部表的数据。所以上面执行的删除表只是删除表的元数据而已。
结论: 外部表的数据不由hive自身负责管理,虽然数据会被加载到/user/hive/warehouse/,但是不由hive管理。
3 指定LOCATION
指定加载数据的位置,不再是默认加载到/user/hive/warehouse/目录下了。
a:内部表
Create table dog(name string,id int) rowformat delimited fields terminated by " " LOCATION '/jdata/dog1/';
加载数据时候这次是加载到/jdata/dog1/目录下,而不再是/user/hive/warehouse/目录,删除指定LOCATION的内部表的时候数据会一起删除。
b:外部表
Createexternal table dog(name string,id int) row format delimited fields terminatedby " " LOCATION'/jdata/dog1/';
加载数据时候这次是加载到/jdata/dog1/目录下,而不再是/user/hive/warehouse/目录。删除指定LOCATION的外部表,数据还在/jdata/dog1/存在
结论: 除了加载数据存放的位置不在是/user/hive/warehouse/,其余没有区别
4分区表
单个属性分区
创建分区表:
create table dog(name string,id int) partitionedby (sex string) row format delimited fields terminated by " ";
反例:
分区属性不能在创建表的属性集合中重复出现,例如:
reate table dog(name string,id int,sexstring) partitioned by (sex string) row format delimited fields terminated by" ";
报错:FAILED:SemanticException [Error 10035]: Column repeated in partitioning columns
分区表加载数据:
load data local inpath '/home/daxin/jdata/boy' into table dogpartition(sex="boy");
load data local inpath '/home/daxin/jdata/girl' into table dogpartition(sex="girl");
注意:sex属性是数据集里面没有的属性,这个是提前分类好的数据然后加载。
HDFS存储的数据结构:
删除和内部表外部表删除特性一致。
多个属性分区
两个属性分区为例:
create table dog(name string,id int) partitionedby (sex string,cate string) row format delimited fields terminated by "";
分区列表属性顺序是有影响的,例如partitionedby (sex string,cate string)
当我们有雌雄两种性别的泰迪、长毛时候,性别是一级分区标准,类别(cate)是耳机分区标准,这其实是一个树的结构,分区属性的先后表现在树的层次上。
例如此例:
多个属性可以根据分区删除数据:
alter table dog drop partition(sex='boy');执行之后sex=boy下面的taidi、changmao两种数据都会被删除。可以这么理解:树的根节点删除,子节点当然也跟随删除了。
alter table dog droppartition(sex='girl',cate='taidi'); 执行之后效果如下:
这个可以理解为直接删除树的叶子节点,不影响器兄弟节点。
- Hive关于内部表外部表以及分区表数据删除总结
- Hive数据加载(内部表,外部表,分区表)
- Hive内部表、外部表、分区表介绍
- hive内部表、外部表、分区表、视图
- hive中的内部表、外部表、分区表
- Hive 外部表 分区表
- Hive的数据存储(内部表,外部表,分区表,桶表,视图)
- Hive笔记三之内部表,外部表,分区表,桶表
- hive 分区表、外部表、桶表
- Hive学习笔记 3 Hive的数据模型:内部表、分区表、外部表、桶表、视图
- Hadoop学习笔记(十八)---Hive内部表,外部表,分区表,桶表
- hive内部表,外部表,分区表,桶表,函数及自定义函数
- Hive内部表、外部表
- hive内部表、外部表
- hive 分区表、桶表和外部表
- Hive之管理表 外部表 分区表
- hive 建表,建外部表,建分区表
- Hive 之 分区表,外部表,桶表
- 用命令行创建AEM项目
- 一个tomcat部署多个应用,有几个JVM?
- springmvc
- bzoj 1799: [Ahoi2009]self 同类分布
- 手动实现cocos2dx里的lua-binding
- Hive关于内部表外部表以及分区表数据删除总结
- javaScript split 按空格和换行切割
- offer-37两个链表是否相交,找第一个公共节点
- 全局变量与局部变量
- 网络层概念学习之一(基本概念、路由器、选路算法)
- iOS开发中Objective-C 对 URL的URLEncode(编码)与URLDecode(解码)
- CentOS6.x 安装 Docker 和 Docker Compose
- 压缩js文件
- 任学堂:美国和联合国教科文组织的恩怨