第3节 hive高级用法:16、17、18
第3节 hive高级用法:16、hive当中常用的几种数据存储格式对比;17、存储方式与压缩格式相结合;18、总结
hive当中的数据存储格式:
行式存储:textFile sequenceFile 都是行式存储
列式存储:orc parquet 可以使我们的数据压缩的更小,压缩的更快
数据查询的时候尽量不要用select * 只选取我们需要的字段即可
hive的数据存储格式:用的比较多的一种行式存储 : textfile
用的比较多的列式存储: orc parquet
其中orc底层有自带的一种压缩算法,会对数据进行压缩的比较厉害
实际工作当中,很多时候,列式存储的数据格式都是选择orc或者parquet 压缩方式都是选择snappy。
课程总结:
1、数据仓库的基本概念:
数据仓库一般分为三层架构 理解
源数据层:贴源层 ODS层
数据仓库层: dw层 主要用于我们的各种数据分析统计
数据应用层:APP层 application 应用层,主要用于我们数据的报表展示等
2、hive的基本概念:理解 数据仓库的工具 ,既不会生产数据,也不会消费数据,数据从外部来,提供开放给外部用
数据存储:用的是hdfs
数据的计算:MapReduce 所以一定要启动hadoop集群
hive的安装:使用mysql作为元数据存储 搞定
3、hive的基本操作:建库语法 搞定
建表语法: 搞定
内部表:管理表 删表的时候会删除hdfs的数据
外部表: external 关键字创建外部表,删表的时候不会删除hdfs的数据
分区表:分文件夹 partitioned by
分桶表:分文件 clustered by into xx buckets
修改表 删除表 了解
hive当中数据的加载:
第一种加载数据的方式:load data local
第二种加载数据的方式: insert overwritae table xx select xxx
4、hive的查询语法:group by 语法要注意
select xxx from group by xxx,abc
5、hive的shell参数 了解
1、hive-site.xml 全局的配置
2、进入hive客户端之前的一些配置 -hiveconfi
3、进入hive客户端以后的一些配置 set xxx=xxx
6、hive的函数以及udf函数
尝试看看能不能自定义udf函数,解析json格式的数据
自定义函数的流程 最少要知道继承那个类 UDF 重写哪个方法 evaluate
7、hive的数据压缩: 搞定
map输出的数据进行压缩
reduce输出的数据进行压缩
常用的压缩方式:snappy
8、hive的数据存储格式:
行式存储:TextFile,SequenceFile
列式存储:ORC ,parquet
9、hive的压缩与存储相结合: 搞定
最常用的列式存储:ORC parquet,压缩方式 snappy
===================================================================================
7.5 主流文件存储格式对比实验
从存储文件的压缩比和查询速度两个角度对比。
存储文件的压缩比测试:
0)测试数据 参见log.data
1)TextFile
(1)创建表,存储数据格式为TEXTFILE
create table log_text ( track_time string, url string, session_id string, referer string, ip string, end_user_id string, city_id string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE ; |
(2)向表中加载数据
load data local inpath '/export/servers/hivedatas/log.data' into table log_text ; |
(3)查看表中数据大小
dfs -du -h /user/hive/warehouse/myhive.db/log_text; |
18.1 M /user/hive/warehouse/log_text/log.data
2)ORC
(1)创建表,存储数据格式为ORC
create table log_orc( track_time string, url string, session_id string, referer string, ip string, end_user_id string, city_id string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS orc ; |
(2)向表中加载数据
insert into table log_orc select * from log_text ; |
(3)查看表中数据大小
dfs -du -h /user/hive/warehouse/myhive.db/log_orc; |
2.8 M /user/hive/warehouse/log_orc/123456_0
3)Parquet
(1)创建表,存储数据格式为parquet
create table log_parquet( track_time string, url string, session_id string, referer string, ip string, end_user_id string, city_id string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS PARQUET ; |
(2)向表中加载数据
insert into table log_parquet select * from log_text ; |
(3)查看表中数据大小
dfs -du -h /user/hive/warehouse/myhive.db/log_parquet; |
13.1 M /user/hive/warehouse/log_parquet/123456_0
存储文件的压缩比总结:
ORC > Parquet > textFile
存储文件的查询速度测试:
1)TextFile
hive (default)> select count(*) from log_text;
_c0
100000
Time taken: 21.54 seconds, Fetched: 1 row(s)
2)ORC
hive (default)> select count(*) from log_orc;
_c0
100000
Time taken: 20.867 seconds, Fetched: 1 row(s)
3)Parquet
hive (default)> select count(*) from log_parquet;
_c0
100000
Time taken: 22.922 seconds, Fetched: 1 row(s)
存储文件的查询速度总结:
ORC > TextFile > Parquet
八、存储和压缩结合
官网:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
ORC存储方式的压缩:
Key |
Default |
Notes |
orc.compress |
ZLIB |
high level compression (one of NONE, ZLIB, SNAPPY) |
orc.compress.size |
262,144 |
number of bytes in each compression chunk |
orc.stripe.size |
67,108,864 |
number of bytes in each stripe |
orc.row.index.stride |
10,000 |
number of rows between index entries (must be >= 1000) |
orc.create.index |
true |
whether to create row indexes |
orc.bloom.filter.columns |
"" |
comma separated list of column names for which bloom filter should be created |
orc.bloom.filter.fpp |
0.05 |
false positive probability for bloom filter (must >0.0 and <1.0) |
1)创建一个非压缩的的ORC存储方式
(1)建表语句
create table log_orc_none( track_time string, url string, session_id string, referer string, ip string, end_user_id string, city_id string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS orc tblproperties ("orc.compress"="NONE"); |
(2)插入数据
insert into table log_orc_none select * from log_text; |
(3)查看插入后数据
dfs -du -h /user/hive/warehouse/myhive.db/log_orc_none; |
7.7 M /user/hive/warehouse/log_orc_none/123456_0
2)创建一个SNAPPY压缩的ORC存储方式
(1)建表语句
create table log_orc_snappy( track_time string, url string, session_id string, referer string, ip string, end_user_id string, city_id string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS orc tblproperties ("orc.compress"="SNAPPY"); |
(2)插入数据
insert into table log_orc_snappy select * from log_text; |
(3)查看插入后数据
dfs -du -h /user/hive/warehouse/myhive.db/log_orc_snappy; |
3.8 M /user/hive/warehouse/log_orc_snappy/123456_0
3)上一节中默认创建的ORC存储方式,导入数据后的大小为
2.8 M /user/hive/warehouse/log_orc/123456_0
比Snappy压缩的还小。原因是orc存储文件默认采用ZLIB压缩。比snappy压缩的小。
4)存储方式和压缩总结:
在实际的项目开发当中,hive表的数据存储格式一般选择:orc或parquet。压缩方式一般选择snappy。
第3节 hive高级用法:16、17、18的更多相关文章
- 第3节 hive高级用法:14、hive的数据压缩
六.hive的数据压缩 在实际工作当中,hive当中处理的数据,一般都需要经过压缩,前期我们在学习hadoop的时候,已经配置过hadoop的压缩,我们这里的hive也是一样的可以使用压缩来节省我们的 ...
- 第3节 hive高级用法:13、hive的函数
4.2.Hive参数配置方式 Hive参数大全: https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties 开 ...
- 第3节 hive高级用法:15、hive的数据存储格式介绍
hive当中的数据存储格式: 行式存储:textFile sequenceFile 都是行式存储 列式存储:orc parquet 可以使我们的数据压缩的更小,压缩的更快 数据查询的时候尽量不要用se ...
- 《linux就该这么学》第十六节课:第16,17章,Squid服务和iscsi网络存储
第十六章 squid总结: 正向代理:yum 安装后清空防火墙即可正常使用,客户端设置浏览器 透明正向代理:vim /etc/squid/squid.conf 59行:http_port 312 ...
- Python3基础-高级用法
写在前面:本文主要是python高级练习部分,介绍了一些高级用法,这些都是零散的小知识,这些可以与函数式编程合在一起使用. 函数式编程1:Python中提供的函数式编程主要有: map(函数,可迭代式 ...
- MongoDB高级用法
MongoDB高级查询用法大全 转载 http://blog.163.com/lgh_2002/blog/static/440175262012052116455/ 详见官方的手册:http://ww ...
- ConxtMenu高级用法
##背景我们经常在列表的页面中,点击列表中的行,一般进入详情页面,长按列表中一行,会弹出一个菜单,包含了对某一行的操作(编辑.删除等等),也知道通常的用法: 0x01. 在Activity中注册需要上 ...
- JavaScript高级用法三之浏览器对象
综述 本篇的主要内容来自慕课网,内置对象,主要内容如下 1 window对象 2 JavaScript 计时器 3 计时器setInterval() 4 取消计时器clearInterval() 5 ...
- Web Scraper 高级用法——抓取属性信息 | 简易数据分析 16
这是简易数据分析系列的第 16 篇文章. 这期课程我们讲一个用的较少的 Web Scraper 功能--抓取属性信息. 网页在展示信息的时候,除了我们看到的内容,其实还有很多隐藏的信息.我们拿豆瓣电影 ...
随机推荐
- C++实现斐波那契第N项非递归与递归实现的时间比较
/* * 斐波那契数列.cpp * * Created on: 2018年4月9日 * Author: soyo */ #include<iostream> #include<cti ...
- php 和 js之间使用json通信
有时候我们需要用后台从数据库中得到的数据在js中进行处理,但是当从php中获取到数据的时候,使用的是键值对形式的多维关联数组.而我们知道,js只支持索引数组,不支持关联数组,这个时候从后台传递过来的数 ...
- mysql 里面的isnull()和ifnull() is null 和 is not null
usergrade表 1.找到里面username是null的行 SELECT * FROM usergrade WHERE ISNULL(USERNAME) SELECT * FROM usergr ...
- HDU2262;Where is the canteen(高斯消元+期望)
传送门 题意 给出一张图,LL从一个点等概率走到上下左右位置,询问LL从宿舍走到餐厅的步数期望 分析 该题是一道高斯消元+期望的题目 难点在于构造矩阵,我们发现以下结论 设某点走到餐厅的期望为Ek 1 ...
- Ocelot(十二)- 请求聚合
Ocelot允许您指定聚合多个普通ReRoutes的Aggregate ReRoutes(聚合路由),并将其响应映射到一个对象中.一般用于当您有一个客户端向服务器发出多个请求,而这些请求可以合并成一个 ...
- C# DateTime.Now 详解
//2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.ToString(& ...
- python网络爬虫之二requests模块
requests http请求库 requests是基于python内置的urllib3来编写的,它比urllib更加方便,特别是在添加headers, post请求,以及cookies的设置上,处理 ...
- _bzoj1009 [HNOI2008]GT考试【矩阵加速dp】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1009 比较不错的一道题,令f(i, j)表示考号匹配到i位,后j位为不吉利串的前j位,那么对 ...
- 深入学习数据结构之bitmap(四)
Bitmap,今天我们来分析一下bitmap的实现原理以及它的使用场景. 一.使用场景: 1.对于大量数据(几千个数据的就不要在废话了),且无重复或者可以忽略重复的数字.为啥这里要强调无重复,因为在b ...
- 2017广东工业大学程序设计竞赛决赛 G 等凹数字
题意: Description 定义一种数字称为等凹数字,即从高位到地位,每一位的数字先非递增再非递减,不能全部数字一样,且该数是一个回文数,即从左读到右与从右读到左是一样的,仅形成一个等凹峰,如54 ...