Sequence Files VS ORC Files
Hadoop
2020-03-18
759
0
群集磁盘资源紧张,需要对表数据进行压缩,将从Sequence
、ORC
中选其一作为以后仓库表文件的存储格式。本文就Snappy
及ZLIB(Gzip)
压缩级别进行表大小以及查询效率的对比
压缩参数
Sequence
-- Snappy
set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
set mapred.output.compression.type=BLOCK;
-- Gzip
set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set mapred.output.compression.type=BLOCK;
ORC
-- Snappy
set hive.exec.orc.default.compress=SNAPPY;
-- ZLIB
set hive.exec.orc.default.compress=ZLIB;
大小对比
订单主表
格式 | 文件大小 | 占用大小 | 压缩比(倍) |
---|---|---|---|
text | 19.8G | 59.5G | |
seq_snappy | 6.1G | 18.4G | 3.24 |
orc_snappy | 4.2G | 12.5G | 4.71 |
seq_gzip | 3.4G | 10.3G | 5.82 |
orc_zlib | 3.0G | 9.0G | 6.6 |
订单明细表
格式 | 文件大小 | 占用大小 | 压缩比(倍) |
---|---|---|---|
text | 18.8G | 56.5G | |
seq_snappy | 4.2G | 12.5G | 4.38 |
orc_snappy | 2.6G | 7.8G | 7.23 |
seq_gzip | 2.3G | 6.9G | 8.17 |
orc_zlib | 1.7G | 5.0G | 11.05 |
SQL查询效率
简单Count
格式 | 第一次 | 第二次 | 第三次 |
---|---|---|---|
seq_snappy | 23.16 | 21.813 | 23.031 |
orc_snappy | 22.154 | 19.911 | 20.582 |
seq_gzip | 33.362 | 26.446 | 27.537 |
orc_zlib | 21.197 | 19.23 | 18.499 |
过滤并分组
格式 | 第一次 | 第二次 | 第三次 |
---|---|---|---|
seq_snappy | 27.436 | 26.453 | 27.796 |
orc_snappy | 21.568 | 25.971 | 29.075 |
seq_gzip | 35.16 | 78.649 | 38.198 |
orc_zlib | 20.273 | 21.491 | 19.539 |
关联查询Count
主表与明细表通过订单ID关联
格式 | 第一次 | 第二次 | 第三次 |
---|---|---|---|
seq_snappy | 64.336 | 68.128 | 63.755 |
orc_snappy | 71.017 | 100.511 | 65.912 |
seq_gzip | 98.201 | 79.246 | 79.736 |
orc_zlib | 99.996 | 69.23 | 74.677 |
实际查询
主表与明细表通过订单ID关联,分组,单表select * , max ,sum等聚合
格式 | 第一次 | 第二次 | 第三次 | 第四次 | 第五次 | 第六次 |
---|---|---|---|---|---|---|
seq_snappy | 580.938 | 1065.992 | 787.999 | 1365.383 | 622.456 | 605.303 |
orc_snappy | 696.887 | 1333.952 | 1034.791 | 806.678 | 789.647 | 794.424 |
seq_gzip | 806.734 | 1448.114 | 1237.069 | 901.431 | 901.75 | 854 |
orc_zlib | 1983 | 1983 | 1294.967 | 906.825 | 926.922 | 975.837 |
第六次细节
类型 | Job | Stage | Map | Reduce | Elapsed | Vcore Map(Seconds) | Vcore Reduce(Seconds) | Vcore Total(Sedonds) | -(orc-seq)/seq |
---|---|---|---|---|---|---|---|---|---|
seq_snap | job_1583725051064_59160 | Stage-1 | 57 | 11 | 5mins,44sec | 1694222 | 2924159 | 4618381 | |
orc_snap | job_1583725051064_59190 | Stage-1 | 49 | 7 | 8mins,45sec | 1494752 | 2895072 | 4389824 | 4.95% |
seq_snap | job_1583725051064_59187 | Stage-2 | 38 | 10 | 4mins,8sec | 1193042 | 1820443 | 3013485 | |
orc_snap | job_1583725051064_59198 | Stage-2 | 39 | 10 | 4mins,12sec | 1197185 | 1941388 | 3138573 | -4.15% |
seq_gzip | job_1583725051064_59028 | Stage-1 | 49 | 6 | 9mins,39sec | 1667028 | 2851133 | 4518161 | |
orc_zlib | job_1583725051064_59046 | Stage-1 | 48 | 5 | 11mins,24sec | 1477584 | 2937803 | 4415387 | 2.27% |
seq_gzip | job_1583725051064_59043 | Stage-2 | 42 | 10 | 4mins,19sec | 1213325 | 2140155 | 3353480 | |
orc_zlib | job_1583725051064_59065 | Stage-2 | 40 | 10 | 4mins,37sec | 1206666 | 2188277 | 3394943 | -1.24% |
类型 | Elapsed | Vcore Total(Sedonds) | -(orc-seq)/seq |
---|---|---|---|
seq_snap | 9mins,52sec | 7631866 | |
orc_snap | 12mins,57sec | 7528397 | 1.36% |
seq_gzip | 13mins,58sec | 7871641 | |
orc_zlib | 16mins | 7810330 | 0.78% |
结论
- 以数据压缩后的大小来看,ORC完胜。
- SQL查询方面,因为orc的文件更小,所以map和reduce数相对较小,导致运算时间增长(20%左右),但总体CPU资源耗用还是要比Seq格式少1%左右。
0条评论