Hive的几种常见压缩格式(ORC,Parquet,Sequencefile,RCfile,Avro)的读写查询性能测试

一.测试背景

工作中想把历史的APP日志结构化到Hive中进行查询,由于数据较大,需要进行压缩,根据Hive官方提供的几种压缩格式分别进行写入,读取,OLAP计算的性能测试,以求找到最好的压缩格式。

 

二.测试方法概述

 

  1. 数据来源:采用生产上数据抽样,大小为100G。原始日志格式为textfile文件(标准JSON)。
  2. 测试平台:公司Ambari测试平台,物理内存100G。
  3. 测试方法:将textfile文件通过脚本自动录入到Hive里,形成大表。(注:解析JSON数据的serde使用 hdp hive自带的hive-hcatalog-core.jar 里面的org.apache.hive.hcatalog.data.JsonSerDe类
  4. 从大表创建基于各种不同存储方式的分区表。
  5. 核心组件HDP版本选择

三.实际操作

1.建立大表js_data

CREATE TABLE IF NOT EXISTS data_ysz.js_data (referer STRING,ip STRING,articleId STRING,catalogCode STRING,userAgent STRING,sessionId STRING,title STRING,deviceId STRING,url STRING,visitTime STRING,catalogId STRING,atype STRING,domain STRING,action STRING,visitDate STRING) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe';

2.装载数据到js_data

load data inpath '' into table js_data 

3.根据大表建立不同存储方式的分区表(依次为RCfile,ORC,sequencefile,parquet,Avro

Create table js_data_partitioned_rcfile(referer STRING,ip STRING,articleId STRING,catalogCode STRING,userAgent STRING,sessionId STRING,title STRING,deviceId STRING,url STRING,visitTime STRING,catalogId STRING,atype STRING,domain STRING,action STRING) PARTITIONED BY (visitDate STRING) STORED AS RCfile
Create table js_data_partitioned_orc(referer STRING,ip STRING,articleId STRING,catalogCode STRING,userAgent STRING,sessionId STRING,title STRING,deviceId STRING,url STRING,visitTime STRING,catalogId STRING,atype STRING,domain STRING,action STRING)PARTITIONED BY (visitDate STRING) STORED AS ORC
Create table js_data_partitioned_sequencefile(referer STRING,ip STRING,articleId STRING,catalogCode STRING,userAgent STRING,sessionId STRING,title STRING,deviceId STRING,url STRING,visitTime STRING,catalogId STRING,atype STRING,domain STRING,action STRING) PARTITIONED BY (visitDate STRING) STORED AS SequenceFile
Create table js_data_partitioned_parquetfile(referer STRING,ip STRING,articleId STRING,catalogCode STRING,userAgent STRING,sessionId STRING,title STRING,deviceId STRING,url STRING,visitTime STRING,catalogId STRING,atype STRING,domain STRING,action STRING) PARTITIONED BY (visitDate STRING) STORED AS parquetfile
Create table js_data_partitioned_avrofile(referer STRING,ip STRING,articleId STRING,catalogCode STRING,userAgent STRING,sessionId STRING,title STRING,deviceId STRING,url STRING,visitTime STRING,catalogId STRING,atype STRING,domain STRING,action STRING) PARTITIONED BY (visitDate STRING) STORED AS Avro

 

4.基于如下SQL进行测试

 

select visitdate,count(*) as pv from 表名 where action = '1'  and domain = 'static.scms.sztv.com.cn' group by visitdate order by pv;

四.结果数据统计

 

 

性能测试结果
存储格式ORCSequencefileParquetRCfileAvro
数据压缩后大小1.8G67.0G11G63.8G66.7G
存储耗费时间535.7s625.8s537.3s543.48544.3
SQL查询响应速度19.63s184.07s24.22s88.5s281.65s

五.结论

1.在压缩存储时间上,除Sequencefile外基本都相差无几。

2.数据压缩比例上ORC最优,相比textfile节省了50倍磁盘空间,parquet压缩性能也较好。

3.SQL查询速度而言,ORC与parquet性能较好,远超其余存储格式。

综合上述各种性能指标,建议工作中原始日志写入hive的存储格式都采用ORC或者parquet格式,这和目前主流的做法一致。

 

 

  • 9
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值