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

news2024/11/25 18:33:06

目录

文件格式和压缩

 Hadoop压缩概述

压缩格式

 Hive文件格式

 Text File

 ORC

1)文件格式

2)结构

3)建表语句

 Parquet

1)文件格式

2)结构

3)建表语句

 压缩

 Hive表数据进行压缩

1)TextFile

2)ORC

3)Parquet

 计算过程中使用压缩

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

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


文件格式和压缩

 Hadoop压缩概述

压缩格式

压缩格式算法文件扩展名是否可切分
DEFLATEDEFLATE.deflate
GzipDEFLATE.gz
bzip2bzip2.bz2
LZOLZO.lzo
SnappySnappy.snappy

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

压缩格式对应的编码/解码器
DEFLATEorg.apache.hadoop.io.compress.DefaultCodec
gziporg.apache.hadoop.io.compress.GzipCodec
bzip2org.apache.hadoop.io.compress.BZip2Codec
LZOcom.hadoop.compression.lzo.LzopCodec
Snappyorg.apache.hadoop.io.compress.SnappyCodec

压缩性能比较:

压缩算法原始文件大小压缩文件大小压缩速度解压速度
gzip8.3GB1.8GB17.5MB/s58MB/s
bzip28.3GB1.1GB2.4MB/s9.5MB/s
LZO8.3GB2.9GB49.3MB/s74.6MB/s

Snappy压缩性能:

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

参考链接: [snappy | A fast compressor/decompressorA fast compressor/decompressoricon-default.png?t=O83Ahttp://google.github.io/snappy/]

 Hive文件格式

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

 Text File

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

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

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)建表语句
CREATE TABLE orc_table
(
  column_specs
)
STORED AS ORC
TBLPROPERTIES (property_name=property_value, ...);

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

参数默认值说明
orc.compressZLIB压缩格式
orc.compress.size262,144每个压缩块的大小
orc.stripe.size67,108,864每个stripe的大小
orc.row.index.stride10,000索引步长

 Parquet

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

1)文件格式

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

2)结构

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

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

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

参数默认值说明
parquet.compressionuncompressed压缩格式
parquet.block.size134217728行组大小
parquet.page.size1048576页大小

 压缩

 Hive表数据进行压缩

1)TextFile

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

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

 计算过程中使用压缩

1)单个MR的中间结果进行压缩
SET mapreduce.map.output.compress=true;
SET mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
2)单条SQL语句的中间结果进行压缩
SET hive.exec.compress.intermediate=true;
SET hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2118012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对话 IDC:一文带你了解低代码的技术趋势和平台选型

近日,葡萄城的活字格企业级低代码开发平台入选《中国低代码开发平台技术评估,2024》技术代表厂商,并在可视化开发、集成能力、开放性和兼容性以及生态能力维度获得五星评价。这一荣誉见证了葡萄城在低代码领域的技术实力与创新成果。 为进一…

Python 基本库用法:数学建模

文章目录 前言数据预处理——sklearn.preprocessing数据标准化数据归一化另一种数据预处理数据二值化异常值处理 numpy 相关用法跳过 nan 值的方法——nansum和nanmean展开多维数组(变成类似list列表的形状)重复一个数组——np.tile 分组聚集——pandas.…

不是你不想做 AI 产品,只是 UI 太贵劝退了你

"我有一个绝妙的 AI 产品创意!" "有想法就动起来呀~" "呃...还是算了吧,UI 太贵了,请不起" 相信不少人都有过这样的内心独白。 可能脑海中已经构思了无数个精彩的页面,甚至连细节都已经了然于胸。 但,在你准备大展拳脚的时候,现实给了…

鸿蒙开发5.0【弱引用】 使用

开发者需要依靠弱引用解决垃圾回收相关的内存管理问题。 强引用:默认的引用类型,被强引用的对象不会被垃圾回收。弱引用:允许对象在没有其他强引用时被垃圾回收,不会阻止垃圾回收器回收该对象。 场景一:使用弱引用打…

揭秘!老人帕金森与嗜睡之谜:是病症常态还是另有隐情?

在关爱老年人健康的道路上,帕金森病这一神经退行性疾病总是牵动着无数家庭的心。随着病情的发展,不少患者家属会发现,家里的老人似乎比以前更容易感到疲倦,甚至频繁出现嗜睡的情况。这不禁让人疑惑:老人帕金森会一直想…

数学建模——Box-Cox变换

用途:当某个随机变量 X X X 不服从正态分布的时候,可以尝试通过这种变换将其变成正态分布。 两个常用的变换 对数变换:已知随机变量 X X X,如果有 ln ⁡ X ∼ N ( μ , σ 2 ) \ln X\sim N(\mu,\sigma^2) lnX∼N(μ,σ2)&…

快被右下角的windows Defender烦死了,怎么让它消失?

前言 前段时间有小伙伴问:Windows自带的杀毒软件Windows Defender怎么关掉? 原因是无论在Windows Defender软件界面里怎么关闭,它都会拦截到某些软件和文件。 而且对于强迫症患者来说,右下角始终有个图标,还带了个x的…

【开源风云】从若依系列脚手架汲取编程之道(四)

📕开源风云系列 🍊本系列将从开源名将若依出发,探究优质开源项目脚手架汲取编程之道。 🍉从不分离版本开写到前后端分离版,再到微服务版本,乃至其中好玩的一系列增强Plus操作。 🍈希望你具备如下…

有了室内外一体化人行导航,你还怕迷路吗?

在快节奏的现代生活中,无论是穿梭于繁华的都市丛林,还是漫步于错综复杂的购物中心,迷路似乎成了不少人的“小确丧”。然而,随着科技的飞速发展,一项革命性的创新——室内外一体化人行导航系统,正悄然改变着…

CAN总线(一)

CAN总线(Controller Area Network Bus),从名字上可以知道,CAN总线构建的是一种局域网网路,每个挂载在CAN总线上的设备都可以利用这个局域网去发送自己的消息,也可以接收局域网的各种消息,每个设…

解锁高效驱动密码:SiLM8260A系列SiLM8260ABCS-DG 集成米勒钳位的双通道隔离驱动芯片

附上SiLM8260A同系列型号参考: SiLM8260ADCS-DG 12.5V/11.5V SiLM8260ABCS-DG 8.5V/7.5V SiLM8260AACS-DG 5.5V/5V SiLM8260AGCS-DG 3.5V/3V SiLM8260ABCS-DG是一款集成了米勒钳位功能的双通道隔离驱动芯片,它精准地满足了上述严苛条件。具备…

Excel排序错误原因之一

# Excel日常表格中的文字排序乱了,在系统语言更改成英语之后,不再按照首字母的顺序排列,且强制设置序列顺序也无济于事。 Excel表格内的排序尝试 表格基础选项就有“排序”,在其自定义选项中的“选项”设置处设置“拼音排序”&am…

2024年实体行业都在用的AI自动直播,有哪些可以发展的机会?

抖捧AI自动直播系统,是一款结合Ai和短视频营销的自动化直播辅助工具,针对企业和实体店有多重的应用场景,通过预设的直播脚本和智能回复逻辑,实现不需要真人参与,就可以实现全天候24小时直播,当用户进入直播…

【Java基础】ThreadLocal<LoginUser>:存储登录用户信息

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【一篇文章搞定】LVGL显示中文+解决keil下LVGL无法正常显示中文及error:#8:missing closing quote问题

LVGL显示中文 进入lvgl中文文档:显示中文 — LVGL 文档 (100ask.net) 下载字体zip文件,解压得到一个.otf文件 进入LVGL的字体转换网站 Font Converter — LVGL 1.点击Browse指定.otf文件即可 2.range不用管 3.为了节省内存在Symbols中输入自己要使用的…

【计算机网络】概述篇

目录 导学 计算机网络的发展简史 互联网的发展历史 中国互联网的发展历史 计算机网络的层次结构 层次结构设计的基本原则 OSI七层模型 TCP/IP四层模型 现代互联网的网络拓扑 计算机网络的性能指标 速率 时延 发送时延 ​传播时延 ​排队时延 处理时延 总时延 …

K8S - Emptydir - 取代ELK 使用fluentd 构建logging saidcar

由于k8s 的无状态service 通常部署在多个POD中, 实现多实例面向高并发。 但是k8s 本身并没有提供集中查询多个pod的日志的功能 其中1个常见方案就是ELK. 本文的方案是 利用fluentd sidecar 和 emptydir 把多个pod的日志导向到bigquery的table中。 Emptydir 的简介 …

STM32F407ZGT6单片机HAL库——DAC输出

一、输出直流电压 1.cubemax的配置(通道1) 2.直流电压大小计算 3.主函数加入初始化的程序 float DAC_voltage1.5;HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, DAC_voltage*4095/3.3);//HAL_DAC_Start(&hdac,DAC_CHANNEL_1); 二、…

深度解析价值流:推动业务架构创新与效益提升的核心指南

数字化转型下的价值流管理与架构 在当今的数字化转型背景下,如何有效创造并交付价值,成为企业竞争力提升的关键课题。作为企业架构的重要组成部分,价值流的概念为业务决策者和技术人员提供了全面的工具,帮助优化业务能力&#xf…

java,php,go,nodejs,Python开发web项目优缺点对比

Java 优点:java 是一门广泛应用于企业级开发的语言,丰富且庞大的开发框架和库。有较高的性能和可伸缩性。生态系统庞大且成熟,拥有大量的开源框架和工具,可以加速开发过程。 内置对多线程的支持,适合处理高并发的 Web 项目。 缺点:相比其他语言,Java 的语法相对冗长繁琐…