第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 功能--抓取属性信息. 网页在展示信息的时候,除了我们看到的内容,其实还有很多隐藏的信息.我们拿豆瓣电影 ...
随机推荐
- linux内存管理之uboot第一步
在进入讲解linux内存管理的kernel阶段以前,了解一下uboot阶段是如何准备好内存物理设备的,这是非常有意义的.通常进入到linux内核阶段之后,对内存芯片的物理特性寄存器访问是比较少的,强调 ...
- 在datagrid中,IE浏览器报错:SCRIPT5007: 无法获取属性“rowspan”的值: 对象为 null 或未定义
项目总采用datagird时,产生界面如下图原本标题上有功能按钮,此时消失 错误:SCRIPT5007: 无法获取属性"rowspan"的值: 对象为 null 或未定义, 造 ...
- asp.net MVC 切换网站主题
首先要有一些定义后的CSS文件,本例是用Bootstrap作为前端框架,可以从http://bootswatch.com/网站上下载一些主题文件,也就是一些定义好的Bootstap.css的文件. 然 ...
- python 面向对象九 定制类
一.定制类,实质就是我们自己重写特殊函数 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__l ...
- c语言程序设计案例教程(第2版)笔记(四)—指针、分配存储空间、文件
零散知识点: 指针类型:每个变量占用的首单元地址称为这个变量的存储地址. “&”为“取地址运算符”.格式:& 变量名.功能:返回指定变量的存储地址. “*”为“取内容运算”.格式:* ...
- 加密解密(1)HTTPS与HTTP区别
HTTPS简介 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即 ...
- PHP autoload实践
本文目的 本文简要的描述了PHP提供的autoload机制,以及在scake中使用实践.用于减少不必要的文件包含,提高php系统性能. 什么是__autoload php是脚本语言,不同于c++只需要 ...
- Hadoop集群搭建及MapReduce应用
一.Hadoop集群的搭建与配置 1.节点准备 集群规划: 主机名 IP 安装的软件 运行的进程 weekend 01 192.168.1.60 jdk.hadoop NameNode.DFSZKFa ...
- MS SqlServer 通过数据库日志文件找回已删除的记录
1.建立演示数据(创建数据库数据表添加基础数据) 1.1 创建数据库 1.2 创建数据表 1.3填充数据 1.4做数据库完整备份 2.模拟误删除.记录操作时间.备份数据库日志 2.1删除数据并记录操作 ...
- visual studio 2015 key vs2015密钥
Visual Studio Professional 2015简体中文版(专业版)KEY:HMGNV-WCYXV-X7G9W-YCX63-B98R2Visual Studio Enterprise 2 ...