Hive 基础 - 使用压缩

发布于 2023-07-17 21:49:24 字数 2352 浏览 33 评论 0

hive 中的数据使用压缩的好处(执行查询时会自动解压):

  1. 可以节约磁盘的空间,基于文本的压缩率可达 40%+;
  2. 压缩可以增加吞吐量和性能量(减小载入内存的数据量),但是在压缩和解压过程中会增加 CPU 的开销。所以针对 IO 密集型的 jobs(非计算密集型)可以使用压缩的方式提高性能。

主流的压缩算法

查看集群的支持的压缩算法.

hive -e "set io.compression.codecs"

返回支持的压缩算法

io.compression.codecs=org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.DeflateCodec,
org.apache.hadoop.io.compress.SnappyCodec,
org.apache.hadoop.io.compress.Lz4Codec

常用的压缩算法:

  • Snappy
  • Gzip
  • ZLIB

hive 文件格式

  • TEXTFILE: 默认格式,数据不做压缩,磁盘开销大。如需压缩,可使用 Gzip、Bzip2 压缩算法,但是不会对数据进行切分;
  • SEQUENCEFILE: 二进制文件,具有使用方便、可分割、可压缩.SequenceFile支持三种压缩选择:NONE,RECORD(压缩率低),BLOCK(常用且压缩性能最好);
  • RCFILE: RCFILE 是一种行列存储相结合的存储方式;
  • ORCFILE: 0.11 以后出现.

hive 配置压缩

建表时申明文件的存储格式,默认为 TEXTFILE。如使用压缩常使用分块压缩 SEQUENCEFILE

CREATE TABLE A(
    ...
)
STORED AS SEQUENCEFILE

数据处理的中间过程和结果使用Snappy算法进行压缩。

-- 任务中间压缩
set hive.exec.compress.intermediate=true;
set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
set hive.intermediate.compression.type=BLOCK;

-- map/reduce 输出压缩
set hive.exec.compress.output=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
set mapred.output.compression.type=BLOCK;

压缩测试案例

Hive 原始数据为 119.2G。

压缩算法TEXTFILE 格式SEQUENCEFILERCFILEORCFILE
不压缩119.2G54.1G20.0G98G
Snappy30.2G23.6G13.6G27.0G
Gzip18.8G14.1G不支持15.2 G
ZLIB不支持不支持10.1G不支持

参考

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

一场春暖

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文