Hive入门之基础知识(四)之文件格式和压缩方法

为什么使用压缩

使用压缩可以减小所需的磁盘空间,减小磁盘和网络的IO操作,减小了载入内存的数据量提高了IO吞吐量,提升了网络性能(因为MapReduce大多是文件读写操作,属于IO密集型)。

几种不同的压缩方案

如果磁盘利用率和IO开销都需要考虑的话,可以选择以下两种

BZip2

压缩率最高,同时需要消耗最多的CPU开销。

GZip

压缩率 / 压缩、解压速度的最佳选择

LZO 和 Snappy

压缩率不及上面的两种,但是压缩和解压的速度更快,特别是在解压过程。
如果需要频繁读取数据进行解压缩,可以使用LZO或者Snappy。

此外,需要注意的一点是GZip和Snappy的压缩文件不可划分。即MapReduce无法将输入的文件划分为多个部分,如果文件特别大,就需要一个单独task来进行处理。

中间压缩

开启中间压缩可以减少map和reduce之间的数据传输量。
对于中间压缩,低CPU开销比最终的压缩效率更为重要。

set hive.exec.compress.intermediate = true // 开启中间压缩,默认为false

sequence file存储格式

sequence file是含有键值对的二进制文件。

对于不可分割的压缩文件,最严重的的缺点就是只能从头读到尾,无法由多个mapper并行执行。

而sequence file存储格式可以将一个文件分为多块,然后采取可分割的方式对块进行压缩。
创建表时可以直接指定sequence file格式:

CREATE TABLE tmp
(
user_id STRING
)
STORED AS SEQUENCEFILE

sequence file提供了三种压缩方式:NONE, RECORD, BLOCK 。
默认为RECORD级,不过通常来说BLOCK级压缩性能最好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值