hive 压缩格式汇总
今天,看了几篇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 压缩格式汇总相关推荐
- 关于Hive中的存储格式及压缩格式详解
最近面试,遇到了关于Hive的数据存储格式的问题,回答不尽人意,抽时间总结多看看关于Hive存储格式和压缩格式的内容. Hive底层数据是以HDFS文件的形式存储在Hadoop中的,选择一个合适的文件 ...
- 【Hive】压缩格式
常见压缩格式 压缩方式 压缩比 压缩速度 解压缩速度 是否可分割 gzip 13.4% 21 MB/s 118 MB/s 否 bzip2 13.2% 2.4MB/s 9.5MB/s 是 lzo 20. ...
- Hive探秘--文件格式与压缩格式
HIVE的几种文件格式 1.TEXTFILE 文本格式,默认格式,数据不做压缩,磁盘开销大,数据解析开销大 对应hive API为org.apache.hadoop.mapred.TextInputF ...
- Hive常见的压缩格式
压缩格式 Hive支持的压缩格式有bzip2.gzip.deflate.snappy.lzo等.Hive依赖Hadoop的压缩方法,所以Hadoop版本越高支持的压缩方法越多,可以在$HADOOP_H ...
- 创建hive表,指定存储和压缩格式
一.指定存储格式是ORC,压缩格式是orc默认的ZLIB压缩 建表语句 create table log_orc_none( track_time string, url string, sessio ...
- HIVE Parquet格式+snappy压缩及ORC格式+snappy压缩文件的方式
一.使用Parquet存储数据 数据使用列存储之前是普通的行存储,下面是行存储的的文件大小,这个HDFS上的数据 使用parquet列存储,可以将文件的大小减小化.下面具体讲parquet存储数据的代 ...
- [博学谷学习记录]超强总结,用心分享|Hive的压缩格式
压缩格式 工具 算法 文件扩展名 是否可切分 DEFAULT 无 DEFAULT .deflate 否 Gzip gzip DEFAULT .gz 否 bzip2 bzip2 bzip2 .bz2 是 ...
- Hive常见压缩格式和性能对比
转载: https://blog.csdn.net/qq_32641659/article/details/88997844 压缩能够减少存储磁盘空间,降低网络IO和磁盘IO,加快数据在磁盘和网络中的 ...
- Hadoop-MapReduce+HDFS文件格式和压缩格式+split和Maptask关系+WordCount剖析+shuffle理解
一. MapReduce on Yarn流程 1. 什么是MapReduce MapReduce是一个计算框架,核心思想是"分而治之",表现形式是有个输入(input),mapre ...
最新文章
- iOS开发网络篇—搭建本地服务器(待整理)
- 三个基本原理和概念 - 计算机图形学、数据加密、数据挖掘
- python保留关键字列表
- ppt怎么加注解文字_向PPT2013演示文稿中添加批注将反馈和想法添加到演示文稿...
- MySQL主从数据库配置和常见问题
- 基于JAVA+SpringMVC+Mybatis+MYSQL的新闻发布系统
- Win7下的C盘重新划分为两个盘
- 使用new调用构造器创建对象并统一添加属性的代码运行过程
- 传输表空间--使用Rman方式
- Deepin在matlab的安装
- 多项logistic回归系数解释_逻辑回归logistic(含python代码)
- jdk1.8_API中文帮助文档
- 维纳滤波python 函数_加性高斯白噪声及维纳滤波的基本原理与Python实现
- Science:拟南芥根系三萜化合物塑造特异的微生物组
- The Top 5 cloud security threats presented by Mark Russinovich
- PIA (Primary Interop Assembly) AIA (Alternate Interop Assembly)简介
- 浏览器自动转到外国服务器,通过HSTS实现浏览器自动跳转https(非服务器响应跳转)...
- 全球与中国汽车检测设备市场现状及未来发展趋势
- 好分数阅卷3.0_好分数app下载-好分数网查成绩安卓版app v3.6.4.1-清风安卓软件网...
- 多页pdf合并成一个的操作方法