Hive文件压缩说明(转)

HIVE的压缩和存储格式 在生产环境中,常用的HIVE存储格式:列式存储的orc和parquet HIVE压缩格式:冷数据-----gzip压缩(压缩比高,压缩解压缩速度高,不可切割); 非冷数据------lzo(可切割)和snappy(不可切割) 案例:student表存储方式是ORC,压缩方式SNAPPY create table student (empno int,empname string) stored as orc tblproperties("orc... 阅读详情

为什么要压缩

在Hive中对中间数据或最终数据做压缩,是提高数据吞吐量和性能的一种手段。对数据做压缩,可以大量减少磁盘的存储空间,比如基于文本的数据文件,可以将文件压缩40%或更多。同时压缩后的文件在磁盘间传输和I/O也会大大减少;当然压缩和解压缩也会带来额外的CPU开销,但是却可以节省更多的I/O和使用更少的内存开销。

压缩模式说明

1. 压缩模式评价

可使用以下三种标准对压缩方式进行评价:

压缩比:压缩比越高,压缩后文件越小,所以压缩比越高越好。 压缩时间:越快越好。 已经压缩的格式文件是否可以再分割:可以分割的格式允许单一文件由多个Mapper程序处理,可以更好的并行化。

2. 压缩模式对比

BZip2有最高的压缩比但也会带来更高的CPU开销,Gzip较BZip2次之。如果基于磁盘利用率和I/O考虑,这两个压缩算法都是比较有吸引力的算法。 LZO和Snappy算法有更快的解压缩速度,如果更关注压缩、解压速度,它们都是不错的选择。 LZO和Snappy在压缩数据上的速度大致相当,但Snappy算法在解压速度上要较LZO更快。 Hadoop的会将大文件分割成HDFS block(默认64MB)大小的splits分片,每个分片对应一个Mapper程序。在这几个压缩算法中 BZip2、LZO、Snappy压缩是可分割的,Gzip则不支持分割。

3. 常见压缩格式

压缩方式压缩方后大小压缩速度是否可分割
GZIP中中否
BZIP2小慢是
LZO大快是
Snappy大快是
ORC小快-

Hadoop编码/解码器方式,如下表所示

4. 什么是可分割

在考虑如何压缩那些将由MapReduce处理的数据时,考虑压缩格式是否支持分割是很重要的。考虑存储在HDFS中的未压缩的文件,其大小为1GB,HDFS的块大小为64MB,所以该文件将被存储为16块,将此文件用作输入的MapReduce作业会创建1个输人分片(split,也称为“分块”。对于block,我们统一称为“块”。)每个分片都被作为一个独立map任务的输入单独进行处理。

现在假设,该文件是一个gzip格式的压缩文件,压缩后的大小为1GB。和前面一样,HDFS将此文件存储为16块。然而,针对每一块创建一个分块是没有用的,因为不可能从gzip数据流中的任意点开始读取,map任务也不可能独立于其他分块只读取一个分块中的数据。gzip格式使用DEFLATE来存储压缩过的数据,DEFLATE将数据作为一系列压缩过的块进行存储。问题是,每块的开始没有指定用户在数据流中任意点定位到下一个块的起始位置,而是其自身与数据流同步。因此,gzip不支持分割(块)机制。

在这种情况下,MapReduce不分割gzip格式的文件,因为它知道输入是gzip压缩格式的(通过文件扩展名得知),而gzip压缩机制不支持分割机制。因此一个map任务将处理16个HDFS块,且大都不是map的本地数据。与此同时,因为map任务少,所以作业分割的粒度不够细,从而导致运行时间变长。

Hive中压缩设置

Hive中间数据压缩

hive.exec.compress.intermediate:默认该值为false,设置为true为激活中间数据压缩功能。HiveQL语句最终会被编译成Hadoop的Mapreduce job,开启Hive的中间数据压缩功能,就是在MapReduce的shuffle阶段对mapper产生的中间结果数据压缩。在这个阶段,优先选择一个低CPU开销的算法。

mapred.map.output.compression.codec:该参数是具体的压缩算法的配置参数,SnappyCodec比较适合在这种场景中编解码器,该算法会带来很好的压缩性能和较低的CPU开销。设置如下:

1

2

3

set hive.exec.compress.intermediate=true

set mapred.map.output.compression.codec= org.apache.hadoop.io.compress.SnappyCodec

set mapred.map.output.compression.codec=com.hadoop.compression.lzo.LzoCodec;

Hive最终数据压缩

hive.exec.compress.output:用户可以对最终生成的Hive表的数据通常也需要压缩。该参数控制这一功能的激活与禁用,设置为true来声明将结果文件进行压缩。

mapred.output.compression.codec:将hive.exec.compress.output参数设置成true后,然后选择一个合适的编解码器,如选择SnappyCodec。设置如下:

1

2

set hive.exec.compress.output=true

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

Hive中文件格式说明

常见的hive文件存储格式包括以下几类:TEXTFILE、SEQUENCEFILE、RCFILE、ORC。其中TEXTFILE为默认格式,建表时默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理。SequenceFile、RCFile格式的表不能直接从本地文件导入数据,数据要先导入到TextFile格式的表中,然后再从TextFile表中用insert导入到SequenceFile、RCFile表中。

1. TextFile

Hive数据表的默认格式,存储方式:行存储。 可以使用Gzip压缩算法,但压缩后的文件不支持split 在反序列化过程中,必须逐个字符判断是不是分隔符和行结束符,因此反序列化开销会比SequenceFile高几十倍。

建表代码

1

2

3

4

5

6

7

8

${建表语句}

stored as textfile;

##########################################插入数据########################################

set hive.exec.compress.output=true; --启用压缩格式

set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; --指定输出的压缩格式为Gzip

set mapred.output.compress=true;

set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;

insert overwrite table textfile_table select * from T_Name;

2. Sequence Files

压缩数据文件可以节省磁盘空间,但Hadoop中有些原生压缩文件的缺点之一就是不支持分割。支持分割的文件可以并行的有多个mapper程序处理大数据文件,大多数文件不支持可分割是因为这些文件只能从头开始读。Sequence File是可分割的文件格式,支持Hadoop的block级压缩。 Hadoop API提供的一种二进制文件,以key-value的形式序列化到文件中。存储方式:行存储。 sequencefile支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,RECORD是默认选项,通常BLOCK会带来较RECORD更好的压缩性能。 优势是文件和hadoop api中的MapFile是相互兼容的

建表代码

1

2

3

4

5

6

7

8

9

${建表语句}

SORTED AS SEQUENCEFILE; --将Hive表存储定义成SEQUENCEFILE

##########################################插入数据########################################

set hive.exec.compress.output=true; --启用压缩格式

set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; --指定输出的压缩格式为Gzip

set mapred.output.compression.type=BLOCK; --压缩选项设置为BLOCK

set mapred.output.compress=true;

set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;

insert overwrite table textfile_table select * from T_Name;

3. RCFile

存储方式:数据按行分块,每块按列存储。结合了行存储和列存储的优点:

首先,RCFile 保证同一行的数据位于同一节点,因此元组重构的开销很低 其次,像列存储一样,RCFile 能够利用列维度的数据压缩,并且能跳过不必要的列读取 数据追加:RCFile不支持任意方式的数据写操作,仅提供一种追加接口,这是因为底层的 HDFS当前仅仅支持数据追加写文件尾部。 行组大小:行组变大有助于提高数据压缩的效率,但是可能会损害数据的读取性能,因为这样增加了 Lazy 解压性能的消耗。而且行组变大会占用更多的内存,这会影响并发执行的其他MR作业。 考虑到存储空间和查询效率两个方面,Facebook 选择 4MB 作为默认的行组大小,当然也允许用户自行选择参数进行配置。

建表代码

1

2

3

4

5

6

7

8

${建表语句}

stored as rcfile;

-插入数据操作:

set hive.exec.compress.output=true;

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

set mapred.output.compress=true;

set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;

insert overwrite table rcfile_table select * from T_Name;

4. ORCFile

存储方式:数据按行分块,每块按照列存储。

压缩快,快速列存取。效率比rcfile高,是rcfile的改良版本。

小结

TextFile默认格式,加载速度最快,可以采用Gzip进行压缩,压缩后的文件无法split,即并行处理。 SequenceFile压缩率最低,查询速度一般,将数据存放到sequenceFile格式的hive表中,这时数据就会压缩存储。三种压缩格式NONE,RECORD,BLOCK。是可分割的文件格式。 RCfile压缩率最高,查询速度最快,数据加载最慢。 相比TEXTFILE和SEQUENCEFILE,RCFILE由于列式存储方式,数据加载时性能消耗较大,但是具有较好的压缩比和查询响应。数据仓库的特点是一次写入、多次读取,因此,整体来看,RCFILE相比其余两种格式具有较明显的优势。 在hive中使用压缩需要灵活的方式,如果是数据源的话,采用RCFile+bz或RCFile+gz的方式,这样可以很大程度上节省磁盘空间;而在计算的过程中,为了不影响执行的速度,可以浪费一点磁盘空间,建议采用RCFile+snappy的方式,这样可以整体提升hive的执行速度。至于lzo的方式,也可以在计算过程中使用,只不过综合考虑(速度和压缩比)还是考虑snappy适宜。

结果展示

对文件进行压缩对比,主要关注压缩比这一块,对压缩时间并未进行对比。未压缩文件是5.5G左右。压缩下如下所示:

1. rcFile+GzipCodec

2. textfile+GzipCodec

3. sequenceFile+GzipCodec

4. rcFile+Snappy

如果不需要压缩

set hive.exec.compress.output=false

Hive ---- 文件格式和压缩 为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器,如下表所示:Hadoop查看支持压缩的方式hadoop checknative。Hadoop在driver端设置压缩。 阅读详情

相关推荐

Hive压缩

map阶段的设置, 就是在MapReduce的shuffle阶段对mapper产生的中间结果数据压缩。在这个阶段,优先选择一个低CPU开销的算法。HQL语句最终会被编译成Hadoop的Mapreduce job,因此hive的压缩设置,实际上就是对底层MR在处理数据时的压缩设置。【千锋教育】大数据开发全套教程,史上最全面的大数据学习视频。即对reduce阶段的输出数据进行压缩设置。更多大数据精彩内容欢迎B站搜索“”或者扫码领取全套资料。

千锋教育 285

Hive 压缩种类介绍 常用压缩参数 hive.exec.compression.intermediate 中间压缩 压缩优化

1.Hive压缩 尽管Hadoop的文件系统支持对于非压缩数据的线性扩展存储,但是对数据进行压缩还是有很多好处的。压缩通常能节约磁盘空间。压缩同样可以增加吞吐量和性能。压缩和解压缩会增加额外的CPU开销,不过,通过减少载入内存的数据量而提高I/O吞吐量会更加提高网络传输性能。 Hadoop的job通常是I/O密集型而不是CPU密集型的。如果是这样的话,压缩可以提高性能。不过如果用户的job是CPU密集型的话,那么使用压缩可能会降低执行性能。确定是否进行压缩的唯一方法就是尝试不同的选择,并测量对...

是个好男人的博客 3391

Hive参数调整详细

--压缩配置: -- map/reduce 输出压缩(一般采用序列化文件存储) set hive.exec.compress.output=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; set mapred.output.compression.type=BLOCK; --任务中间压缩 set hive.exec.compress.intermediate=true; set hi.

someInNeed的博客 2688

Hive压缩说明

Hive压缩使用

xsdxs的博客 8896

QT快速配置MSVC2017编译环境(3分钟极简指南)

本文提供了一份3分钟极简指南,帮助开发者快速配置QT的MSVC2017编译环境。通过断网安装、精准勾选组件和配置QT Creator编译器路径等步骤,大幅提升QT开发效率。MSVC2017作为Windows平台高性能C++编译器,特别适合处理大型QT项目,编译速度优势明显。

weixin_30399821的博客 503

51单片机独立按键控制LED(二)

对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动。独立按键控制LED显示二进制。独立按键控制LED灯亮灭。独立按键控制LED状态。独立按键控制LED移位。

m0_50562428的博客 5381

hive之文件格式与压缩

为Hive表中的数据选择一个合适的文件格式,对提高查询性能的提高是十分有益的。Hive表数据的存储格式,可以选择text file、orc、parquet、sequence file等。ORC(Optimized Row Columnar)file format是Hive 0.11版里引入的一种列式存储的文件格式。ORC文件能够提高Hive读写数据和处理数据的性能。我们文件一般都是一个二维表,行式存储就是以一行数据为一个单位,存储在相邻的位置,列示存储是以一列数据为单位,一个单位内的数据放在相邻的位置。

&volume的博客 1593

基于 Node.js + MongoDB 技术栈的小众开源短链接程序 —— Lynx

开源的短链接程序有很多,像 YOURLS、Shlink 等大多采用 PHP + MySQL 技术栈。但我之前的服务器配置一般,再加上自己写的小玩具使用的是 Node.js + MongoDB,这些环境已经装在服务器上了,因此更倾向于寻找一款同样基于这套技术栈的短链接程序。搜索了很久才找到这么一款基于的短链接程序——Lynx。这个开源项目非常小众,Star 数只有两百多。

zc_mk的博客 826

Hive学习——文件格式和压缩

Hive学习——文件格式和压缩

雷神乐乐的博客 1380

llama.cpp量化模型在MTT显卡上的性能对比:S80/S3000/S4000实测数据

本文基于摩尔线程MTT S80、S3000和S4000三款显卡,对llama.cpp量化模型进行了深度性能实测。报告详细对比了不同量化精度(如Q4_K_M、Q6_K)在Llama 3.2 1B和Qwen 2.5 7B模型上的推理速度、显存占用、功耗及温度表现,为开发者根据硬件选择最优模型配置与参数调优提供了关键数据参考和实战指南。

week9的博客 350

告别臃肿VS!仅用Visual Studio 2022 Build Tools为Qt 5.12.12配置MSVC2017开发环境

本文详细介绍了如何仅使用Visual Studio 2022 Build Tools为Qt 5.12.12配置MSVC2017开发环境,避免安装臃肿的完整VS。通过精准选择组件、配置Qt Creator编译器和优化Kit设置,实现高效、精简的Windows平台Qt开发环境搭建,特别适合追求性能和资源优化的开发者。

weixin_30340617的博客 350

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

压缩格式算法文件扩展名是否可切分DEFLATEDEFLATE.deflate否GzipDEFLATE.gz否bzip2bzip2.bz2是LZOLZO.lzo是SnappySnappy.snappy否压缩格式对应的编码/解码器DEFLATEgzipbzip2LZOSnappy压缩算法原始文件大小压缩文件大小压缩速度解压速度gzip8.3GB1.8GB17.5MB/s58MB/sbzip28.3GB1.1GB2.4MB/s。

qq_45115959的博客 1696

温升试验详解

温升试验是电子设备可靠性验证的重要手段,用于评估器件在正常工作或极限条件下的热稳定性。试验通过测量器件表面或关键点温度与环境温度的差值(ΔT),判断是否存在过热风险。主要依据行业标准,采用热电偶、热像仪等设备测量稳态温度。热阻分析可建立温升与功耗的关系,指导器件选型、PCB热设计和散热结构优化。典型应用包括电源模块和LED电路测试。温升试验通过系统性热分析,能有效提升产品在高负载、高温环境下的可靠性和安全性,对现代小型化、高密度电子设备尤为重要。

硬核科技 1329

HIVE实战处理(六)hive的压缩格式以及压缩文件导入hive实战

一、存储 行存储的特点: 查询满足条件的一整行数据的时候,列存储则需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。 列存储的特点: 因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。 Hive中常用的存储格式: 1....

sheep8521的博客 4756

基于Termux的Android平台OpenClaw部署:移动端AI助理实现

本文介绍了在Android设备上通过Termux部署OpenClaw AI助理的方案。Android设备的便携性、Termux提供的完整Linux环境以及多样化的硬件配置使其成为理想的部署平台。文章详细分析了不同级别Android设备的硬件规格(从入门级到旗舰级),并提供了最低/推荐配置要求。部署步骤包括Termux安装初始化、Python环境配置以及性能优化建议。该方案充分利用Android设备的传感器和电池供电优势,为移动办公、学习等场景提供了低成本、高便携性的AI助理解决方案。

博客 3011

NR TA

这篇是NR TA的笔记,之前有对R17 NTN TA进行了简单总结,但是也仅仅局限在NTN部分,其他TA基本过程没有涉及,这篇是针对R16版本协议对NR TA相关内容做的总结。和PUSCH power control过程类似,NR TA也可以分为开环 和闭环调整,相关内容分散在38.300,38.211,38.213,38.321,38.133和38.331。后面就按照38.300 TA相关概念,38.211中有关TA定义,38.213 TA 相关内容,38.321 TA控制过程,38.133 Timi

ModemProtocol的博客 768

Hive基础知识(二十):Hive 文件存储形式与文件压缩对比

存储文件的查询速度测试:

zuodingquan666的博客 1444

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

hive优化-文件存储格式和压缩方法

hive调优是比较大的专题,需要结合实际的业务,数据的类型,分布,质量状况等来实际的考虑如何进行系统性的优化,hive底层是mapreduce,所以hadoop调优也是hive调优的一个基础,hvie调优可以分为几个模块进行考虑,数据的压缩与存储,sql的优化,hive参数的优化,解决数据的倾斜等。 主要分为以下几块: 第一:数据的压缩与存储格式 对分析的数据选择合适的存储格...

阿尼古 3935

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

hive压缩&&hdfs合并小文件

hdfs合并小文件 hadoop fs -getmerge hdfs文件夹路径 合并本地的文件名 如果hdfs误删除文件或者hive误删除文件 /user/hadoop/.Trash/Current 这个地址下有文件备份,文件备份保留七天(core配置文件可以设置) hive压缩 压缩的好处: (执行查询时会自动解压) 可以节约磁盘的空间,基于文本的压缩率可达40%+; 压缩可以增加吞吐量和性...

OnTheRoad的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【大数据入门 | Hive】文件格式和压缩

压缩格式算法文件扩展名是否可切分DEFLATEDEFLATE.deflate否GzipDEFLATE.gz否bzip2bzip2.bz2是LZOLZO.lzo是SnappySnappy.snappy否为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器,如下表所示:Hadoop查看支持压缩的方式hadoop checknative。Hadoop在driver端设置压缩。压缩格式对应的编码/解码器DEFLATEgzipbzip2LZOSnappy。

2301_80912559的博客 825

hive 文件压缩

为什么要压缩   在Hive中对中间数据或最终数据做压缩,是提高数据吞吐量和性能的一种手段。对数据做压缩,可以大量减少磁盘的存储空间,比如基于文本的数据文件,可以将文件压缩40%或更多。同时压缩后的文件在磁盘间传输和I/O也会大大减少;当然压缩和解压缩也会带来额外的CPU开销,但是却可以节省更多的I/O和使用更少的内存开销。 压缩模式说明 1. 压缩模式评价 可使用以下三种标准对压缩方式进...

u011500419的专栏 503

hive压缩

Hadoop压缩数据流程 hadoop中有三个阶段可以用到压缩,分别是Map,Shuffle和Reduce,其中Map阶段首先对输入的数据进行压缩,然后在Map的job中进行解压并对数据进行业务处理,将结果写入磁盘的时候进行数据的压缩,Shuffle的过程中将磁盘中压缩的文件内容读取出来,然后传递给Reduce,Reduce中对数据再进行解压并做业务处理,整个过程都计算完毕后再用压缩对输出进行压缩。其数据流程可以用下面的流程表示: 压缩的输入文件->(解压数据)->Maps->压缩输

weixin_38251332的博客 2893

【004hive基础】hive的文件存储格式与压缩

hive文件存储格式与压缩

hiliang521的博客 2453

【大数据之Hive】十九、Hive之文件格式和压缩

ORC是列式存储的文件格式,可以提高hive读写数据和处理数据的性能。左边为逻辑表。右边第一个为行式存储:取文件的一行数据存储到相邻的位置;第二个为列式存储:取文件的一列数据存储到相邻的位置。查询满足条件的一整行数据的时候,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。列式存储查找一行数据时需要去每个字段中找对应的每个列的值。因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;

阿宁的博客 1659

Hive之配置使用snappy压缩

https://zhuanlan.zhihu.com/p/103740807 https://blog.youkuaiyun.com/xsdxs/article/details/53152599 为什么要压缩   在Hive中对中间数据或最终数据做压缩,是提高数据吞吐量和性能的一种手段。对数据做压缩,可以大量减少磁盘的存储空间,比如基于文本的数据文件,可以将文件压缩40%或更多。同时压缩后的文件在磁盘间传输和I/O也会大大减少;当然压缩和解压缩也会带来额外的CPU开销,但是却可以节省更多的I/O和使用更..

Mr.pan felix的专栏 7391
上一篇: hive 逻辑判断
下一篇: Parquet
大怀特
博客等级 码龄6年 5787粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大怀特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值