第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 功能--抓取属性信息. 网页在展示信息的时候,除了我们看到的内容,其实还有很多隐藏的信息.我们拿豆瓣电影 ...
随机推荐
- 关于bitset
https://www.zybuluo.com/ysner/note/1327705 原理 \(bitset\)的原理是将一大堆值为\(0/1\)的数压成一个数. 操作 通过\(i>>x\ ...
- hdu 5289(单调队列)
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- Day.js 是一个仅 2kb 大小的轻量级 JavaScript 时间日期处理库,和 Moment.js 的 API 设计保持完全一样,dayjs
https://gitee.com/mirrors/Day.js api: https://gitee.com/mirrors/Day.js/blob/master/docs/zh-cn/API-re ...
- HDU 5944 Fxx and string (暴力)
题意:给定一个字符串,问有多少个三元组满足 i, j, k组成一个等比数列,并且s[i] = 'y', s[j] = 'r', s[k] = 'x',且j/i ,j/k中至少一个是整数. 析:直接暴力 ...
- poj1419 求最大独立集
题目链接:http://poj.org/problem?id=1419 题意:求最大独立集 思路: 这里有一个定理: 最大独立集=补图的最大团最大团=补图的最大独立集 所以这里我们只要求给出的图的最大 ...
- Thinkpad x230i安装Ubuntu10.04发生no network devices available
这个是由于10.04版本没有集成x230i的网卡驱动导致,需要到http://sourceforge.net/projects/e1000/f ... %20stable/下载最新版本驱动,并安装,之 ...
- linux下系统调用劫持ioctl
实验环境:linux 2.6.32 64位系统 采用lkm(动态加载内核模块)方式劫持ioctl系统调用,系统调用过程如图所示(以open为例子) 实验代码:(头文件有不需要的,但是懒得改了,在系 ...
- bzoj4580: [Usaco2016 Open]248(区间dp)
4580: [Usaco2016 Open]248 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 255 Solved: 204[Submit][S ...
- 超级实用的VSCode插件,帮你大幅提高工作效率
Visual Studio Code是一个轻量级但功能强大的源代码编辑器,可在桌面上运行,适用于Windows,macOS和Linux. 它内置了对JavaScript,TypeScript和Node ...
- ACMer需要的 java基本知识
1.基本定义 import java.util.*; import java.io.*; public class Main { public static void main(String[] ar ...