Hive压缩存储性能测试

前言

前一篇根据官网对Hive表如何使用压缩格式的数据进行了阐述,不过从Hive编程指南中我们可以看到如下一种建议:
在这里插入图片描述
当然Hive编程指南的中Hive的版本是非常低的,低于0.13版本,因此创建压缩表的方式和前一篇略有不同,不过我们重点不在这,而是,同时使用入ORC、Parquet这种格式,并且采用Gzip、Snappy压缩,这样的性能究竟如何呢?

创建表

TextFile格式:

CREATE TABLE textFile (id INT,name STRING)
PARTITIONED BY ( date STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

Parquet格式:

CREATE TABLE parquet(id INT,name STRING)
PARTITIONED BY ( date STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
STORED AS PARQUET;

Parquet+Snappy压缩

CREATE TABLE snappy(id INT,name STRING)
PARTITIONED BY ( date STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
STORED AS PARQUET TBLPROPERTIES('parquet.compression'='SNAPPY');

加载数据

给textFile表加载数据:

LOAD DATA LOCAL INPATH '/var/lib/hadoop-hdfs/test.gz' INTO TABLE textFile;

给parquet表加载数据:

SET hive.exec.dynamic.partition.mode=nonstrict
SET hive.exec.compress.output=true;
INSERT OVERWRITE TABLE parquet PARTITION(date) SELECT * FROM textFile;

给parquet+snappy压缩表加载数据:

SET hive.exec.dynamic.partition.mode=nonstrict
SET hive.exec.compress.output=true;
INSERT OVERWRITE TABLE snappy PARTITION(date) SELECT * FROM textFile;

测试压缩比

文件类型大小(G)
TextFile477.7
Parquet347.2
Parquet+Snappy185.0

Parquet是原生的1.4倍,Parquet+Snappy是原生的2.6倍是只用Parquet的1.9倍

查询效率

简单的执行一下

SELECT COUNT(*)  FROM table;

结果都是:

1830337392
文件类型耗时(senconds)
TextFile156.204
Parquet247.831
Parquet+Snappy210.01

查询效率TextFile最高,Parquet最低。也就是不经过压缩的数据查询效率会更高,因此一般ods层为了减少存储空间会进行压缩,但dw层可能会为了快速运算,可以考虑不压缩(具体根据实际业务来设计)。

后记

通过简单的测试,发现采用Hive编程指南的方案是最佳实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunnyRivers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值