Hive压缩格式与存储格式
介绍
hive表常用的存储格式主要包括:orc、parquet、avro、rcfile、sqeuencefile几种,存储格式一般会选择综合性能最好的orc或者parquet,这两种都是列式存储格式。压缩格式一般会选择snappy、lzo、gizp,针对不同的应用场景使用不同的压缩方式。
原文件:1403M
压缩格式 | 压缩大小 | 压缩时间 | 解压时间 | 是否可切分 |
---|---|---|---|---|
Snappy | / | 6.4s | 19.8s | 不可切分 |
LZ4 | 693M | 6.4s | 2.36s | 不可切分 |
LZO | 684M | 7.6s | 11.1s | 带序号可切分 |
GZIP | 447M | 85.6s | 21.8s | 不可切分 |
BZIP2 | 390M | 142.3s | 62.5s | 可切分 |
压缩比和压缩时间成反比,压缩比越小,耗费时间越大
总结: hive一般用orc,spark一般用parquet,snappy配合parquet性能最高。
压缩方式选择(hive table):
数据量大,计算性能要求不高的业务数据,一般用gzip(压缩比最高,压缩解压缩速度最慢)
计算性能要求较高,数据量不是特别大的业务数据,一般用lzo或者snappy (压缩比没有gzip高,但是压缩解压速度较快)
1 | // snappy: |
MR阶段过程:
input -> map -> shuffle -> reduce -> output
shuffle 阶段几个重要内容:
分区 -> 排序 -> 分组 -> combiner(map端的reduce) -> 压缩 -> map阶段输出
compression压缩:
map 输出 和 reduce 输出
1.中间数据压缩
1 | set hive.exec.compress.intermediate=true; -- 激活中间数据压缩功能,默认false |
1.最终数据压缩
1 | set hive.exec.compress.output=true; |
存储方式选择(hive table):
Hive数据表的默认格式 textfile
,存储方式:行存储。
选择综合性能最优的两种存储格式:orc和parquet 。
磁盘空间占用: orc<parquet<textfile
查询速度和压缩比: orc>parquet>textfile
hive一般用orc,spark一般用parquet,snappy配合parquet性能最高。
1 | -- hive建表 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jeremy!