第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的更多相关文章

  1. 第3节 hive高级用法:14、hive的数据压缩

    六.hive的数据压缩 在实际工作当中,hive当中处理的数据,一般都需要经过压缩,前期我们在学习hadoop的时候,已经配置过hadoop的压缩,我们这里的hive也是一样的可以使用压缩来节省我们的 ...

  2. 第3节 hive高级用法:13、hive的函数

    4.2.Hive参数配置方式 Hive参数大全: https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties 开 ...

  3. 第3节 hive高级用法:15、hive的数据存储格式介绍

    hive当中的数据存储格式: 行式存储:textFile sequenceFile 都是行式存储 列式存储:orc parquet 可以使我们的数据压缩的更小,压缩的更快 数据查询的时候尽量不要用se ...

  4. 《linux就该这么学》第十六节课:第16,17章,Squid服务和iscsi网络存储

    第十六章 squid总结: 正向代理:yum  安装后清空防火墙即可正常使用,客户端设置浏览器 透明正向代理:vim  /etc/squid/squid.conf 59行:http_port  312 ...

  5. Python3基础-高级用法

    写在前面:本文主要是python高级练习部分,介绍了一些高级用法,这些都是零散的小知识,这些可以与函数式编程合在一起使用. 函数式编程1:Python中提供的函数式编程主要有: map(函数,可迭代式 ...

  6. MongoDB高级用法

    MongoDB高级查询用法大全 转载 http://blog.163.com/lgh_2002/blog/static/440175262012052116455/ 详见官方的手册:http://ww ...

  7. ConxtMenu高级用法

    ##背景我们经常在列表的页面中,点击列表中的行,一般进入详情页面,长按列表中一行,会弹出一个菜单,包含了对某一行的操作(编辑.删除等等),也知道通常的用法: 0x01. 在Activity中注册需要上 ...

  8. JavaScript高级用法三之浏览器对象

    综述 本篇的主要内容来自慕课网,内置对象,主要内容如下 1 window对象 2 JavaScript 计时器 3 计时器setInterval() 4 取消计时器clearInterval() 5 ...

  9. Web Scraper 高级用法——抓取属性信息 | 简易数据分析 16

    这是简易数据分析系列的第 16 篇文章. 这期课程我们讲一个用的较少的 Web Scraper 功能--抓取属性信息. 网页在展示信息的时候,除了我们看到的内容,其实还有很多隐藏的信息.我们拿豆瓣电影 ...

随机推荐

  1. linux内存管理之uboot第一步

    在进入讲解linux内存管理的kernel阶段以前,了解一下uboot阶段是如何准备好内存物理设备的,这是非常有意义的.通常进入到linux内核阶段之后,对内存芯片的物理特性寄存器访问是比较少的,强调 ...

  2. 在datagrid中,IE浏览器报错:SCRIPT5007: 无法获取属性“rowspan”的值: 对象为 null 或未定义

    项目总采用datagird时,产生界面如下图原本标题上有功能按钮,此时消失   错误:SCRIPT5007: 无法获取属性"rowspan"的值: 对象为 null 或未定义, 造 ...

  3. asp.net MVC 切换网站主题

    首先要有一些定义后的CSS文件,本例是用Bootstrap作为前端框架,可以从http://bootswatch.com/网站上下载一些主题文件,也就是一些定义好的Bootstap.css的文件. 然 ...

  4. python 面向对象九 定制类

    一.定制类,实质就是我们自己重写特殊函数 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__l ...

  5. c语言程序设计案例教程(第2版)笔记(四)—指针、分配存储空间、文件

    零散知识点: 指针类型:每个变量占用的首单元地址称为这个变量的存储地址. “&”为“取地址运算符”.格式:&  变量名.功能:返回指定变量的存储地址. “*”为“取内容运算”.格式:* ...

  6. 加密解密(1)HTTPS与HTTP区别

    HTTPS简介 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即 ...

  7. PHP autoload实践

    本文目的 本文简要的描述了PHP提供的autoload机制,以及在scake中使用实践.用于减少不必要的文件包含,提高php系统性能. 什么是__autoload php是脚本语言,不同于c++只需要 ...

  8. Hadoop集群搭建及MapReduce应用

    一.Hadoop集群的搭建与配置 1.节点准备 集群规划: 主机名 IP 安装的软件 运行的进程 weekend 01 192.168.1.60 jdk.hadoop NameNode.DFSZKFa ...

  9. MS SqlServer 通过数据库日志文件找回已删除的记录

    1.建立演示数据(创建数据库数据表添加基础数据) 1.1 创建数据库 1.2 创建数据表 1.3填充数据 1.4做数据库完整备份 2.模拟误删除.记录操作时间.备份数据库日志 2.1删除数据并记录操作 ...

  10. visual studio 2015 key vs2015密钥

    Visual Studio Professional 2015简体中文版(专业版)KEY:HMGNV-WCYXV-X7G9W-YCX63-B98R2Visual Studio Enterprise 2 ...