hive 数据压缩与存储格式选择

概述

  • 为什么会出现需要对文件进行压缩? 
    在Hadoop中,文件需要存储、传输、读取磁盘、写入磁盘等等操作,而文件的大小,直接决定了这些这些操作的速度。

  • 常见压缩方式、压缩比、压缩解压缩时间、是否可切分

    原文件:1403M

    Snappy 压缩:701M,压缩时间: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,可切分

    总结:压缩比和压缩时间成反比,压缩比越小,耗费时间越大

  • 两个矛盾:

    耗费CPU、时间与存储空间、传输速度、IO的矛盾 
    压缩比与压缩、解压缩时间的矛盾 
    ps:追求合适场景使用合适方式

  • 图解MapReduce



1.第一次传入压缩文件,应选用可以切片的压缩方式,否则整个文件将只有一个Map执行

2.第二次压缩应选择压缩解压速度快的压缩方式

3.第三次压缩有两种场景分别是:一.当输出文件为下一个job的输入,选择可切分的压缩方式例如:BZip2。二.当输出文件直接存到HDFS,选择压缩比高的压缩方式。

  • hive参数

    • hive.exec.compress.output 设置是否压缩

    • mapreduce.output.fileoutputformat.compress.codec 设置压缩Reduce类型输出

    • hive.intermediate.compression.codec 设置中间Map压缩类型

    可选类型:

    1. org.apache.hadoop.io.compress.DefaultCodec

    2. org.apache.hadoop.io.compress.GzipCodec

    3. org.apache.hadoop.io.compress.BZip2Codec

    4. com.hadoop.compression.lzo.LzoCodec

    5. org.apache.hadoop.io.compress.Lz4Codec

    6. org.apache.hadoop.io.compress.SnappyCodec


定义压缩方式的选择
1)  写进相关配置文件中
core-site.xml   codecs
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec
</value>
</property>  


mapred-site.xml   switch+codec
<property>
<name>mapreduce.output.fileoutputformat.compress</name>
<value>true</value>
</property>


<property>
<name>mapreduce.output.fileoutputformat.compress.codec</name>
<value>org.apache.hadoop.io.compress.BZip2Codec</value>
</property>  



2)  第二种方式 在 hive 客户端代码层实现

mapreduce.map.output.fileoutputformat.compress


SET hive.exec.compress.output=true;
SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.BZip2Codec;


create table page_views_bzip2
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
as select * from page_views;


create table page_views_snappy
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
as select * from page_views;




===存储格式在Hadoop 和hive 中应用=== 
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值