今天,看了几篇hive压缩格式相关的博客觉得不错,在这里做一下提取要点汇总。

0 前言

数据做压缩和解压缩会增加CPU的开销,但可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,所以最好对那些I/O密集型的作业使用数据压缩,cpu密集型,使用压缩反而会降低性能。

而hive中间结果是map输出传给reduce,所以应该使用低cpu开销和高压缩效率,一般最好使用snappy

1 源数据在云上(hdfs)压缩存储

Hadoop默认支持Gzip和BZip2的解压缩方式,可直接读取(hadoop fs -text命令),但hive只能用TEXTFILE格式的表加载,然后再insertoverwrite 到其他格式的表(比如SEQUENCEFILE表),如果hive其他格式的表想要直接加载压缩格式数据,需要重写INPUTFORMAT和OUTPUTFORMAT文件类

2 压缩格式文件的切分(不支持则hadoop不能并行的进行map操作)

BZip2和LZO(提供block级的压缩)支持文件切分

Gzip和Snappy则不支持。

mapreduce 的压缩

mapreduce 压缩 主要是在shuffle阶段的优化。 shuffle 端的 --partition (分区) -- sort (排序) -- combine (合并) -- compress (压缩) -- group (分组) 在mapreduce 优化shuffle 从本质上是解决磁盘的IO 与网络IO 问题。减少 集群件的文件传输处理。

4 hive 的压缩:

压缩的和解压需要cpu的,hive 的常见的压缩格式: bzip2,gzip,lzo,snappy等 cdh 默认采用的压缩是snappy 压缩比:bzip2 > gzip > lzo bzip2 最节省存储空间。 注意: sanppy 的并不是压缩比最好的 解压速度: lzo > gzip > bzip2 lzo 解压速度是最快的。 注意:追求压缩速率最快的sanppy 压缩的和解压需要cpu 损耗比较大。 集群分: cpu 的密集型 (通常是计算型的网络) hadoop 是 磁盘 IO 和 网络IO 的密集型, 网卡的双网卡绑定。

5 mapreduce 支持的压缩:

CodeName: zlib : org.apache.hadoop.io.compress.DefaultCodec gzip : org.apache.hadoop.io.compress.GzipCodec gzip2: org.apache.hadoop.io.compress.Bzip2Codec lzo : org.apache.hadoop.io.compress.LzoCodec lz4 : org.apache.hadoop.io.compress.Lz4Codec snappy: org.apache.hadoop.io.compress.SnappyCodec

6 行存储与列式存储区别

数据库列存储不同于传统的关系型数据库,其数据在表中是按行存储的,列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因 此整个数据库是自动索引化的。   按列存储每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量,一个字段的数据聚集存储,那就 更容易为这种聚集存储设计更好的压缩/解压算法。

TextFile:默认的类型,行存储 rcfile:按行块,每块再按列存储 avro:二进制
7 ORC格式

8  PARQUET格式

9 在表结构上指定文件类型

1) orc 类型

create table page_views_orc( track_time string, url string, session_id string, refere string, ip string, end_user_id string, city_id string ) row format delimited fields terminated by '\t' STORED AS orc ;

2) parquet类型

create table page_views_parquet( track_time string, url string, session_id string, refere string, ip string, end_user_id string, city_id string ) row format delimited fields terminated by '\t' STORED AS parquet ;

10 创建表与指定压缩

1)orc+snappy 格式

create table page_views_orc_snappy( track_time string, url string, session_id string, refere string, ip string, end_user_id string, city_id string ) row format delimited fields terminated by '\t' STORED AS orc TBLPROPERTIES("orc.compression"="Snappy");

2)parquet+snappy 格式

set parquet.compression=Snappy ; set hive.exec.compress.output=true ; create table page_views_parquet_snappy( track_time string, url string, session_id string, refere string, ip string, end_user_id string, city_id string ) row format delimited fields terminated by '\t' STORED AS parquet ;

对比:orc+snappy 存储和查询 > parquet + snappy

11 压缩格式 创建表文件格式 + 压缩参数

1)默认 text+default

--设置压缩类型为Gzip压缩

SET hive.exec.compress.output=true;

SET mapred.output.compress=true;

SET mapred.output.compression.codec=org.apache.hadoop.io.compress.DefaultCodec;

2)gzip 格式 text+gzip

--设置压缩类型为Gzip压缩

SET hive.exec.compress.output=true;

SET mapred.output.compress=true;

SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

文件.gz

3) Bzip2格式 text +bzip2

--设置压缩类型为Bzip2压缩:

SET hive.exec.compress.output=true;

SET mapred.output.compress=true;

SET mapred.output.compression.codec=org.apache.hadoop.io.compress.BZip2Codec;

文件.bz2

4) lzo 格式 text + lzo

--设置为LZO压缩

SET hive.exec.compress.output=true;

SET mapred.output.compress=true;

SET mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec;

文件.lzo

5) snappy 格式 text + snappy

--设置压缩

SET hive.exec.compress.output=true;

SET mapred.compress.map.output=true;

SET mapred.output.compress=true;

SET mapred.output.compression=org.apache.hadoop.io.compress.SnappyCodec;

SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;

SET io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodec;

文件.snappy

6)sequence 格式 sequence + default

--设置压缩类型为Gzip压缩

SET hive.exec.compress.output=true;

SET mapred.output.compress=true;

SET mapred.output.compression.codec=org.apache.hadoop.io.compress.DefaultCodec;

文件如:000000_0

7) sequence 格式 sequence + gzip

--设置压缩类型为Gzip压缩

SET hive.exec.compress.output=true;

SET mapred.output.compress=true;

SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

文件:是一个密文的文件,无法通过gzip解压,如:000000_0

8)rcfile 格式 rcfile + gzip

--设置压缩类型为Gzip压缩

SET hive.exec.compress.output=true;

SET mapred.output.compress=true;

SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

9) orcfile 格式

ORCFile有自己的参数设置压缩格式,一般不使用上述Hive参数设置压缩参数。

a orcfile + zlib

CREATE TABLE student_orcfile_zlib (id STRING, name STRING)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ','

LINES TERMINATED BY '\n'

STORED AS ORCFILE TBLPROPERTIES ("orc.compress"="ZLIB");

b orcfile+snappy

CREATE TABLE student_orcfile_snappy2 (id STRING, name STRING)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ','

LINES TERMINATED BY '\n'

STORED AS ORCFILE TBLPROPERTIES ("orc.compress"="SNAPPY");

参考博客:

https://blog.csdn.net/longshenlmj/article/details/50550580

https://blog.51cto.com/flyfish225/2097274

http://bigdata.51cto.com/art/201706/542623.htm

hive 压缩格式汇总相关推荐

  1. 关于Hive中的存储格式及压缩格式详解

    最近面试,遇到了关于Hive的数据存储格式的问题,回答不尽人意,抽时间总结多看看关于Hive存储格式和压缩格式的内容. Hive底层数据是以HDFS文件的形式存储在Hadoop中的,选择一个合适的文件 ...

  2. 【Hive】压缩格式

    常见压缩格式 压缩方式 压缩比 压缩速度 解压缩速度 是否可分割 gzip 13.4% 21 MB/s 118 MB/s 否 bzip2 13.2% 2.4MB/s 9.5MB/s 是 lzo 20. ...

  3. Hive探秘--文件格式与压缩格式

    HIVE的几种文件格式 1.TEXTFILE 文本格式,默认格式,数据不做压缩,磁盘开销大,数据解析开销大 对应hive API为org.apache.hadoop.mapred.TextInputF ...

  4. Hive常见的压缩格式

    压缩格式 Hive支持的压缩格式有bzip2.gzip.deflate.snappy.lzo等.Hive依赖Hadoop的压缩方法,所以Hadoop版本越高支持的压缩方法越多,可以在$HADOOP_H ...

  5. 创建hive表,指定存储和压缩格式

    一.指定存储格式是ORC,压缩格式是orc默认的ZLIB压缩 建表语句 create table log_orc_none( track_time string, url string, sessio ...

  6. HIVE Parquet格式+snappy压缩及ORC格式+snappy压缩文件的方式

    一.使用Parquet存储数据 数据使用列存储之前是普通的行存储,下面是行存储的的文件大小,这个HDFS上的数据 使用parquet列存储,可以将文件的大小减小化.下面具体讲parquet存储数据的代 ...

  7. [博学谷学习记录]超强总结,用心分享|Hive的压缩格式

    压缩格式 工具 算法 文件扩展名 是否可切分 DEFAULT 无 DEFAULT .deflate 否 Gzip gzip DEFAULT .gz 否 bzip2 bzip2 bzip2 .bz2 是 ...

  8. Hive常见压缩格式和性能对比

    转载: https://blog.csdn.net/qq_32641659/article/details/88997844 压缩能够减少存储磁盘空间,降低网络IO和磁盘IO,加快数据在磁盘和网络中的 ...

  9. Hadoop-MapReduce+HDFS文件格式和压缩格式+split和Maptask关系+WordCount剖析+shuffle理解

    一. MapReduce on Yarn流程 1. 什么是MapReduce MapReduce是一个计算框架,核心思想是"分而治之",表现形式是有个输入(input),mapre ...

最新文章

  1. iOS开发网络篇—搭建本地服务器(待整理)
  2. 三个基本原理和概念 - 计算机图形学、数据加密、数据挖掘
  3. python保留关键字列表
  4. ppt怎么加注解文字_向PPT2013演示文稿中添加批注将反馈和想法添加到演示文稿...
  5. MySQL主从数据库配置和常见问题
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的新闻发布系统
  7. Win7下的C盘重新划分为两个盘
  8. 使用new调用构造器创建对象并统一添加属性的代码运行过程
  9. 传输表空间--使用Rman方式
  10. Deepin在matlab的安装
  11. 多项logistic回归系数解释_逻辑回归logistic(含python代码)
  12. jdk1.8_API中文帮助文档
  13. 维纳滤波python 函数_加性高斯白噪声及维纳滤波的基本原理与Python实现
  14. Science:拟南芥根系三萜化合物塑造特异的微生物组
  15. The Top 5 cloud security threats presented by Mark Russinovich
  16. PIA (Primary Interop Assembly) AIA (Alternate Interop Assembly)简介
  17. 浏览器自动转到外国服务器,通过HSTS实现浏览器自动跳转https(非服务器响应跳转)...
  18. 全球与中国汽车检测设备市场现状及未来发展趋势
  19. 好分数阅卷3.0_好分数app下载-好分数网查成绩安卓版app v3.6.4.1-清风安卓软件网...
  20. 多页pdf合并成一个的操作方法

热门文章

  1. signal,blinker:信号(看我脸色行事)
  2. 有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁
  3. springboot报错(三) webjars被拦截或找不到
  4. 批量查找Oracle中多个表中同一字段的长度
  5. ES GEO地理空间查询java版
  6. 流体动力学控制方程(详细推导)
  7. 多行输入以及结束输入
  8. 无线固话新型诈骗技术防范
  9. 拉普拉斯变换(与傅里叶变换的关系)
  10. 区块链系统:挖矿原理