HIVE压缩及存储方式

 几种压缩方式的优缺点及应用场景

1. Gzip

  • 优点: 压缩率比较高,压缩/解压速度也比较快,hadoop本身支持。
  • 缺点: 不支持分片。
  • 应用场景:当每个文件压缩之后在1个block块大小内, 可以考虑用gzip压缩格式。

2. Bzip2

  • 优点: 支持分片,具有很高的压缩率,比gzip压缩率都高,Hadoop本身支持。

  • 缺点: 压缩/解压速度慢,不支持Hadoop native库。

  • 应用场景: 可以作为mapreduce作业的输出格式,输出之后的数据比较大,处理之后的数据需要压缩存档减少磁盘

    空间并且以后数据用得比较少的情况。

3. LZO

  • 优点: 压缩/解压速度也比较快,合理的压缩率,支持分片,是Hadoop中最流行的压缩格式,支持Hadoop native库。 可以在linux系统下安装lzop命令,使用方便。
  • 缺点: 压缩率比gzip要低一些,Hadoop本身不支持,需要安装,如果支持分片需要建立索引,还需要指定inputformat改为lzo格式。
  • 应用场景:一个很大的文本文件,压缩之后还大于200M以上的可以考虑,而且单个文件越大,lzo优点越明显。

4. Snappy

  • 优点: 支持Hadoop native库,高速压缩速度和合理的压缩率。
  • 缺点: 不支持分片,压缩率比gzip要低,Hadoop本身不支持,需要安装。
  • 应用场景:当MapReduce作业的map输出的数据比较大的时候,作为map到reduce的中间数据的压缩格式。

5. 总结

  1. 压缩比: bzip2 > gzip > lzo > snappy
  2. 压缩和解压缩速度,与压缩比成反比: snappy > lzo> gzip > bzip2
  3. BZip2,LZO提供了块(BLOCK)级别的压缩,支持split切分;而snappy,gzip将文件中记录的边界信息掩盖掉了,因此不支持split切分

 

Hive可概括为六种存储格式

  • TEXTFILE
  • SEQUENCEFILE
  • AVRO FILE
  • PARQUET
  • RCFILE
  • ORCFILE

在其中textfile为默认格式,如果在创建hive表不提及,会默认启动textfile格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理;与此同时,sequencefile,rcfile,orcfile自己不能直接从本地导入数据,需要将数据转为textfile格式,才能导入三种不同的格式。

(二) 简单介绍其特点

1. TEXTFILE

  • 理论

    默认格式,数据不做压缩,磁盘开销大,数据解析开销大。

    可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。

  • 存储方式:行存储

2. SEQUENCEFILE

  • 理论

    二进制文件,以<key,value>的形式序列化到文件中;

    SequenceFile是Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点;

    SequenceFile支持三种压缩选择:NONE,RECORD,BLOCK;

    Record压缩率低,一般建议使用BLOCK压缩;

  • 存储方式:行存储

3. AVRO FILE

  • 理论

    Avro是一个数据序列化系统,设计用于支持大批量数据交换的应用。支持二进制序列化方式,可以便捷,快速地处理大量数据;动态语言友好,Avro提供的机制使动态语言可以方便地处理Avro数据。

  • 存储方式:Avro依赖模式(Schema)来实现数据结构定义。可以把模式理解为Java的类,它定义每个实例的结构,可以包含哪些属性。可以根据类来产生任意多个实例对象

 

4. PARQUET

        是一种列式数据存储格式,可以兼容多种计算引擎,如MapRedcue 和Spark等,对多层嵌套的数据结构提供了良好的性能支持,是目前Hive 生产环境中数据存储的主流选择之一。

5. RCFILE

  1. 存储方式:数据按行分块,每块按列存储。结合了行存储和列存储的优点:
  2. RCFile 保证同一行的数据位于同一节点,因此元组重构的开销很低;
  3. 像列存储一样,RCFile 能够利用列维度的数据压缩,并且能跳过不必要的列读取;
  4. 数据追加:RCFile不支持任意方式的数据写操作,仅提供一种追加接口,这是因为底层的 HDFS当前仅仅支持数据追加写文件尾部。

6. ORCFILE

  1. 存储方式:数据按行分块 每块按照列存储。
  2. 压缩快、快速列存取,提高Hive的读取、写入和处理数据的性能。
  3. 效率比rcfile高,是rcfile的优化版本。
  4. 能够兼容多种计算引擎

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值