Hive官方使用手册——压缩数据存储格式

本文为自己翻译的译文,原文地址:https://cwiki.apache.org/confluence/display/Hive/CompressedStorage


压缩数据存储

在某些情况下,将压缩的数据保存在Hive表中比未压缩存储的性能更好;无论是在磁盘使用方面还是在查询性能方面。

您可以将压缩了Gzip或Bzip2的文本文件直接导入到存储为TextFile的表中。压缩会被自动检测,并且在查询执行期间,文件将在运行时被动态解压缩。例如:

CREATE TABLE raw (line STRING)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY  '\t'  LINES TERMINATED BY  '\n' ;
 
LOAD DATA LOCAL INPATH  '/tmp/weblogs/20090603-access.log.gz'  INTO TABLE raw;

表“raw”存储为文本文件,这是默认存储。但是,在这种情况下,Hadoop将不会将您的数据文件分割成chunks/blocks并采用多个map任务并行运行。 这可能会导致对集群的“map”能力的利用不足。

推荐的做法是将数据插入到另一个表中,该表存储为SequenceFile。一个SequenceFile可以被Hadoop分割并分布在map作业中,而GZIP文件则不能。例如:

CREATE TABLE raw (line STRING)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY  '\t'  LINES TERMINATED BY  '\n' ;
 
CREATE TABLE raw_sequence (line STRING)
    STORED AS SEQUENCEFILE;
 
LOAD DATA LOCAL INPATH  '/tmp/weblogs/20090603-access.log.gz'  INTO TABLE raw;
 
SET hive.exec.compress.output= true ;
SET io.seqfile.compression.type=BLOCK; -- NONE/RECORD/BLOCK (see below)
INSERT OVERWRITE TABLE raw_sequence SELECT * FROM raw;

io.seqfile.compression.type的取值决定了压缩如何被执行。在进行压缩之前,记录可以分别压缩每个值同时块缓冲区存储会增加到1MB(默认值)。

LZO 压缩

在Hive中使用LZO,请查阅 LZO Compression获取更多信息。
.


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值