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)
TextFile 477.7
Parquet 347.2
Parquet+Snappy 185.0

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

查询效率

简单的执行一下

SELECT COUNT(*)  FROM table;

结果都是:

1830337392
文件类型 耗时(senconds)
TextFile 156.204
Parquet 247.831
Parquet+Snappy 210.01

查询效率TextFile略高,Parquet最低

后记

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

发布了237 篇原创文章 · 获赞 140 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/Android_xue/article/details/103929657