Hadoop压缩技术与Hive文件格式详解

目录

文件格式和压缩

Hadoop压缩概述

压缩格式

Hive文件格式

[Text File](#Text File)

ORC

1)文件格式

2)结构

3)建表语句

Parquet

1)文件格式

2)结构

3)建表语句

压缩

Hive表数据进行压缩

1)TextFile

2)ORC

3)Parquet

计算过程中使用压缩

1)单个MR的中间结果进行压缩

2)单条SQL语句的中间结果进行压缩


文件格式和压缩

Hadoop压缩概述

压缩格式

压缩格式 算法 文件扩展名 是否可切分
DEFLATE DEFLATE .deflate
Gzip DEFLATE .gz
bzip2 bzip2 .bz2
LZO LZO .lzo
Snappy Snappy .snappy

为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器:

压缩格式 对应的编码/解码器
DEFLATE org.apache.hadoop.io.compress.DefaultCodec
gzip org.apache.hadoop.io.compress.GzipCodec
bzip2 org.apache.hadoop.io.compress.BZip2Codec
LZO com.hadoop.compression.lzo.LzopCodec
Snappy org.apache.hadoop.io.compress.SnappyCodec

压缩性能比较:

压缩算法 原始文件大小 压缩文件大小 压缩速度 解压速度
gzip 8.3GB 1.8GB 17.5MB/s 58MB/s
bzip2 8.3GB 1.1GB 2.4MB/s 9.5MB/s
LZO 8.3GB 2.9GB 49.3MB/s 74.6MB/s

Snappy压缩性能:

  • 在Core i7处理器单核64位模式下,Snappy压缩速度约为250 MB/s,解压缩速度约为500 MB/s或更高。

参考链接: [snappy \| A fast compressor/decompressorA fast compressor/decompressor![icon-default.png?t=O83A](https://csdnimg.cn/release/blog_editor_html/release2.3.7/ckeditor/plugins/CsdnLink/icons/icon-default.png)http://google.github.io/snappy/](http://google.github.io/snappy/ "snappy | A fast compressor/decompressor")

Hive文件格式

为Hive表中的数据选择一个合适的文件格式,对提高查询性能至关重要。Hive表数据的存储格式包括text file、orc、parquet、sequence file等。

Text File

文本文件是Hive默认使用的文件格式。

创建文本文件格式的表语句如下:

sql 复制代码
CREATE TABLE textfile_table
(
  column_specs
)
STORED AS TEXTFILE;

ORC

1)文件格式

ORC(Optimized Row Columnar)是一种列式存储的文件格式,能够提高Hive读写数据和处理数据的性能。

与列式存储相对的是行式存储,下图是两者的对比:

如图所示左边为逻辑表,右边第一个为行式存储,第二个为列式存储。

2)结构

每个Orc文件由Header、Body和Tail三部分组成。每个stripe由Index Data、Row Data和Stripe Footer组成。Tail由File Footer和PostScript组成。

3)建表语句
sql 复制代码
CREATE TABLE orc_table
(
  column_specs
)
STORED AS ORC
TBLPROPERTIES (property_name=property_value, ...);

ORC文件格式支持的参数如下:

参数 默认值 说明
orc.compress ZLIB 压缩格式
orc.compress.size 262,144 每个压缩块的大小
orc.stripe.size 67,108,864 每个stripe的大小
orc.row.index.stride 10,000 索引步长

Parquet

Parquet是一个通用的列式存储文件格式。

1)文件格式

Parquet文件的基本结构由若干个Row Group和一个Footer(File Meta Data)组成。

2)结构

每个Row Group包含多个Column Chunk,每个Column Chunk包含多个Page。

3)建表语句
sql 复制代码
CREATE TABLE parquet_table
(
  column_specs
)
STORED AS PARQUET
TBLPROPERTIES (property_name=property_value, ...);

Parquet文件格式支持的参数如下:

参数 默认值 说明
parquet.compression uncompressed 压缩格式
parquet.block.size 134217728 行组大小
parquet.page.size 1048576 页大小

压缩

Hive表数据进行压缩

1)TextFile

对于TextFile类型的表,可以通过设置以下参数确保输出结果被压缩:

sql 复制代码
SET hive.exec.compress.output=true;
SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
2)ORC
sql 复制代码
CREATE TABLE orc_table
(
  column_specs
)
STORED AS ORC
TBLPROPERTIES ("orc.compress"="snappy");
3)Parquet
sql 复制代码
CREATE TABLE parquet_table
(
  column_specs
)
STORED AS PARQUET
TBLPROPERTIES ("parquet.compression"="snappy");

计算过程中使用压缩

1)单个MR的中间结果进行压缩
sql 复制代码
SET mapreduce.map.output.compress=true;
SET mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
2)单条SQL语句的中间结果进行压缩
sql 复制代码
SET hive.exec.compress.intermediate=true;
SET hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
相关推荐
极新15 分钟前
中国机器人已出海至141国,售后服务正成为新的机会
大数据·人工智能·机器人
AI_yangxi41 分钟前
靠谱的短视频矩阵系统
大数据·人工智能·矩阵
czxxxc43 分钟前
知识服务迎来 AI 变革,创客匠人 AI 智能体破解创作者运营难题
大数据·人工智能
戴西软件2 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
衡石科技2 小时前
衡石科技携手超聚变联合发布HENGSHI BOX,引领私域ChatBI规模化落地
大数据·人工智能·科技
青春之我_XP2 小时前
MySQL 常用日期函数 实战指南
数据库·sql·mysql·数据分析·数据库开发·日期函数
2301_818474443 小时前
福建中小微企业云 ERP 落地实践:轻量化信息化项目实施指南
大数据·人工智能
咕泡科技3 小时前
咕泡科技×创业酵母俞头私享会:AI时代,组织如何长出“破局力”?
大数据·人工智能·科技
大大大大晴天3 小时前
每天认识一个组件:元数据湖 Apache Gravitino
大数据
2601_957879333 小时前
电商在用什么 AI 视频创作工具?2026年从“做视频”到“做素材库”的工具变化
大数据·人工智能