Hive_Hive的数据模型_汇总
体系结构: 元数据 /HQL的执行
安装: 嵌入 /远程 /本地
管理: CLI /web界面 /远程服务
数据类型: 基本 /复杂 /时间
数据模型: 数据存储 /内部表 /分区表 /外部表 /桶表 /视图
=============================================================================================
Hive的数据模型_数据存储 web管理工具察看HDFS文件系统:http://<IP>:50070/ 基于HDFS
没有专门的数据存储格式,默认使用制表符
存储结构主要包括:数据库,文件,表,视图
可以直接加载文本文件
创建表时,可以指定Hive数据的列分隔符和行分隔符。 Hive数据模型
表:
-Table内部表
-Partition分区表
-External Table 外部表
-Bucket Table 桶表
视图: =============================================================================================
Hive的数据模型_内部表
- 与数据库中的Table在概念上是类似。
- 每一个Table在Hive中都有一个相应的目录存储数据。
- 所有的Table数据(不包括External Table)都保存在这个目录中。 create table t1
(tid int, tname string, age int); create table t2
(tid int, tname string, age int)
location '/mytable/hive/t2' create table t3
(tid int, tname string, age int)
row format delimited fields terminated by ','; create table t4
as
select * from t1; hdfs dfs -cat /usr/hive/warehouse/tablename/000000_0 alter table t1 add columns(english int);
desc t1; drop table t1;
if open the recycle bin function of hdfs . we can see the file not delete, but move from one dir to another dir, we can restore it. =============================================================================================
Hive的数据模型_分区表 准备数据表:
create table sampledata
(sid int, sname string, gender string, language int, math int, english int)
row format delimited fields terminated by ',' stored as textfile; 准备文本数据:
sampledata.txt
1,Tom,M,60,80,96
2,Mary,F,11,22,33
3,Jerry,M,90,11,23
4,Rose,M,78,77,76
5,Mike,F,99,98,98 将文本数据插入到数据表:
hive> load data local inpath '/root/pl62716/hive/sampledata.txt' into table sampledata; -partition对应于数据库中的Partition 列的密集索引
-在Hive中,表中的一个Partition对应于表下的一个目录,所有的Partition的数据都存储在对应的目录中。 创建分区表:
create table partition_table
(sid int, sname string)
partitioned by (gender string)
row format delimited fields terminated by ',';
向分区表中插入数据:
hive> insert into table partition_table partition(gender='M') select sid, sname from sampledata where gender='M';
hive> insert into table partition_table partition(gender='F') select sid, sname from sampledata where gender='F'; 从内部表解析比从分区表解析效率低: 内部表:
hive> explain select * from sampledata where gender='M';
OK
STAGE DEPENDENCIES:
Stage-0 is a root stage STAGE PLANS:
Stage: Stage-0
Fetch Operator
limit: -1
Processor Tree:
TableScan
alias: sampledata
Statistics: Num rows: 1 Data size: 90 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: (gender = 'M') (type: boolean)
Statistics: Num rows: 1 Data size: 90 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: sid (type: int), sname (type: string), 'M' (type: string), language (type: int), math (type: int), english (type: int)
outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
Statistics: Num rows: 1 Data size: 90 Basic stats: COMPLETE Column stats: NONE
ListSink Time taken: 0.046 seconds, Fetched: 20 row(s) 分区表:
hive> explain select * from partition_table where gender='M';
OK
STAGE DEPENDENCIES:
Stage-0 is a root stage STAGE PLANS:
Stage: Stage-0
Fetch Operator
limit: -1
Processor Tree:
TableScan
alias: partition_table
Statistics: Num rows: 2 Data size: 13 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: sid (type: int), sname (type: string), 'M' (type: string)
outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 2 Data size: 13 Basic stats: COMPLETE Column stats: NONE
ListSink Time taken: 0.187 seconds, Fetched: 17 row(s) =============================================================================================
Hive的数据模型_外部表 外部表(External Table)
-指向已经在HDFS中存在的数据,可以创建Partition
-它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异。
-外部表侄有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个外部表时,仅删除该链接。 1、准备几张相同数据结构的数据txt文件,放在HDFS的/input 目录下。
2、在hive下创建一张有相同数据结构的外部表external_student,location设置为HDFS的/input 目录。则external_student会自动关连/input 下的文件。
3、查询外部表。
4、删除/input目录下的部分文件。
5、查询外部表。删除的那部分文件数据不存在。
6、将删除的文件放入/input目录。
7、查询外部表。放入的那部分文件数据重现。 (1)准备数据:
student1.txt
1,Tom,M,60,80,96
2,Mary,F,11,22,33
student2.txt
3,Jerry,M,90,11,23
student3.txt
4,Rose,M,78,77,76
5,Mike,F,99,98,98 # hdfs dfs -ls /
# hdfs dfs -mkdir /input 将文件放入HDFS文件系统
hdfs dfs -put localFileName hdfsFileDir
# hdfs dfs -put student1.txt /input
# hdfs dfs -put student2.txt /input
# hdfs dfs -put student3.txt /input (2)创建外部表
create table external_student
(sid int, sname string, gender string, language int, math int, english int)
row format delimited fields terminated by ','
location '/input'; (3)查询外部表
select * from external_student; (4)删除HDFS上的student1.txt
# hdfs dfs -rm /input/student1.txt (5)查询外部表
select * from external_student; (6)将student1.txt 重新放入HDFS input目录下
# hdfs dfs -put student1.txt /input (7)查询外部表
select * from external_student; =============================================================================================
Hive的数据模型_桶表 对数据进行HASH运算,放在不同文件中,降低热块,提高查询速度。
例如:根据sname进行hash运算存入5个桶中。 create table bucket_table
(sid int, sname string, age int)
clustered by (sname) into 5 buckets; =============================================================================================
Hive的数据模型_视图
-视图是一种虚表,是一个逻辑概念;可以跨越多张表
-视图建立在已有表的基础上,视图赖以建立的这些表称为基表。
-视图可以简化复杂的查询。 创建视图
create view viewName
as
select data from table where condition; 查看视图结构
desc viewName; 查询视图
select * from viewName;
Hive_Hive的数据模型_汇总的更多相关文章
- Hive_Hive的数据模型_内部表
Hive的数据模型_内部表 - 与数据库中的Table在概念上是类似.- 每一个Table在Hive中都有一个相应的目录存储数据.- 所有的Table数据(不包括External Table)都保存在 ...
- Hive_Hive的数据模型_数据存储
Hive的数据模型_数据存储 web管理工具察看HDFS文件系统:http://<IP>:50070/ 基于HDFS没有专门的数据存储格式,默认使用制表符存储结构主要包括:数据库,文件,表 ...
- Hive_Hive的数据模型_外部表
Hive的数据模型之外部表 外部表(External Table)- 指向已经在HDFS中存在的数据,可以创建Partition- 它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异. ...
- Hive_Hive的数据模型_分区表
Hive的数据模型之分区表 准备数据表: create table sampledata (sid int, sname string, gender string, language int, ma ...
- Hive_Hive的数据模型_视图
- 视图是一种虚表,是一个逻辑概念:可以跨越多张表- 视图建立在已有表的基础上,视图赖以建立的这些表称为基表.- 视图可以简化复杂的查询. 创建视图 create view viewName as s ...
- Hive_Hive的数据模型_桶表
对数据进行HASH运算,放在不同文件中,降低热块,提高查询速度. 例如:根据sname进行hash运算存入5个桶中. create table bucket_table(sid int, sname ...
- python学习两月总结_汇总大牛们的思想_值得收藏
下面是我汇总的我学习两个月python(version:3.3.2)的所有笔记 你可以访问:http://www.python.org获取更多信息 你也可以访问:http://www.cnblogs. ...
- Vivado_MicroBlaze_问题及解决方法_汇总(不定时更新)
Vivado_MicroBlaze_问题及解决方法_汇总(不定时更新) 标签: Vivado 2015-07-03 14:35 4453人阅读 评论(0) 收藏 举报 分类: 硬件(14) 版权声 ...
- TypeScript完全解读(26课时)_汇总贴
ECMAScript 6 入门:http://es6.ruanyifeng.com/ 官网:http://www.typescriptlang.org/ 中文网:https://www.tslang. ...
随机推荐
- html5--1.18 div元素与布局
1.18 div元素与布局 1.元素的分类2.div元素与布局 1.元素的分类 块元素:主要特征是会产生换行效果,自动与其他元素分离成两行:通常可以作为容器在内部添加其他元素. 已经学过的块元素有: ...
- html5--1.16 内联框架
html5--1.16 内联框架 学习要点: 1.iframe内联框架2.综合实例1 1.iframe内联框架 1.iframe元素用来在文档中添加一个内联框架. 2.iframe为body元素的子元 ...
- ef 多个模块,通过程序集映射entity,指定对应的repository
在Entity Framework repository下加两个方法: public virtual T GetByEntityName(object id, string EntityTypeNam ...
- pod lib lint 报错 Unable to find a specification for `AMap2DMap` depended upon by `DingtalkPod
执行 pod验证 报错如下 ➜ DingtalkPod git:(2.0.0) ✗ pod lib lint --sources='https://github.com/AloneMonkey/Mo ...
- HihoCoder1672 : 区间问题([Offer收割]编程练习赛41)(贪心)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定N个区间[Ai, Bi],请你找到包含元素最少的整数集合S,使得每个区间都至少有两个整数在S中. 例如给定三个区间[1 ...
- tyvj 1203 机器分配
时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 总公司拥有高效生产设备M台,准备分给下属的N个公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何 ...
- [转]BFC 神奇背后的原理
BFC 已经是一个耳听熟闻的词语了,网上有许多关于 BFC 的文章,介绍了如何触发 BFC 以及 BFC 的一些用处(如清浮动,防止 margin 重叠等).虽然我知道如何利用 BFC 解决这些问题, ...
- 51 nod 1522 上下序列——序列dp
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1522 很好的思想.考虑从小到大一对一对填数,这样也能对它的大小限制 ...
- 洛谷 P3804 [模板] 后缀自动机
题目:https://www.luogu.org/problemnew/show/P3804 模仿了一篇题解,感觉很好写啊. 代码如下: #include<cstdio> #include ...
- mac下nginx的安装
新手初学,按照网上的教程,一步一步来进行安装.把自己的安装流程贴出来. 1 安装nginx需要三方的lib库pcre.因此先下载pcre. 在这里,需要注意的是安装的pcre的版本要与nginx对应. ...