文件存储格式:ORC 与 Parquet的较量

大数据Orc文件生成与读取 高效压缩:ORC文件支持多种压缩算法,如Snappy、Zlib等,可以显著减少存储空间。快速读取:列式存储使得ORC文件能够快速读取特定列的数据,而无需读取整个行。结构化数据支持:ORC文件可以存储复杂的结构化数据,如嵌套结构、列表和映射等。在生成ORC文件之前,您需要定义数据的schema。schema定义了数据的结构,包括列的名称和类型。 阅读详情

Hive 支持的文件存储格式

Apache Hive支持Apache Hadoop中使用的几种熟悉的文件格式

  • TextFile(文本格式)
  • RCFile(行列式文件)
  • SequenceFile(二进制序列化文件)
  • AVRO
  • ORC(优化的行列式文件)
  • Parquet 格式

使用最多的是TextFile,SequenceFile,ORC和Parquet,今天此篇就从ORC 和 Parquet讲讲这两种文件存储格式,在讲之前再认识下 TextFile 文件存储格式。

TextFile

TextFile 的特点就是行存储文件(每一行就是一条记录),可以使用任意的分隔符进行分割,但是无压缩,所以数据存储空间大。可以结合GZIP,SNAPPY 等使用,但是hive并不会对数据进行切分,所以就无法对数据进行并行处理操作。

总结:TextFile 默认格式,数据不做压缩,磁盘开销大,数据解析开销大。

row format delimited fields terminated by '\t'
stored as textfile;

ORC

ORC文件以二进制方式存储,所以是不可以直接读取,ORC文件也是自解析的,它包含许多的元数据。ORC文件:保存在文件系统上的普通二进制文件,一个ORC文件中可以包含多个stripe,每一个stripe包含多条记录,这些记录按照列进行独立存储。

列式存储与行列式存储

列式存储,是按照一列一列存储的,如果查询一个列(字段)的数据,就等于是索引查询,效率高。但是如果需要查全表(所有列),因为需要取所有的列最后汇总,反而更占用资源,然而ORC存在以下特点。

特点

(1)在需要全表扫描时,可以按照行组读取。

(2)如果需要取列数据,在行组的基础上,读取指定的列,而不需要所有行组内所有行的数据和一行内所有字段的数据。

所以要看下ORC的存储结构。

ORC的存储结构

在这里插入图片描述

(1)stripe:一组行形成一个stripe,每次读取文件是以行组为单位的,一般为HDFS的块大小,保存了每一列的索引和数据。

(2)Index Data:存数据的一些统计信息和位置索引信息。

(3)Row Data:数据存储的地方,有多个行组组成。

(4)Stripe Footer:保存文件所在的文目录。

(5)File Footer:文件脚注,包含了文件中stripe的列表,每个stripe的行数和行的数据类型,以及每列的最值和聚合信息。

(6)Poststripe:包含压缩参数大小相关的信息。

ORC提供了3级索引,文件级、条带级(stripe)、行组级,所以在查询的时候,利用这些索引可以规避大部分不满足查询条件的文件和数据块。

ORC的事务ACID

ORC格式的表还支持事务ACID,然而支持事务的表必须是分桶表,这是因为Hive表没有分桶,那么数据文件的散乱的,hive的事务机制无法有效的读取,所以适用于更新大批量的数据,不建议用事务频繁的更新小批量的数据。

Hive 事务支持

(1) 建的表必须是分桶表。

(2)建表的类型文件:stored as orc

(3) tblproperties(‘transactional’=‘true’);

#必须支持分桶
clustered by (id) into 2 buckets
#在表属性中添加支持事务
stored as orc
TBLPROPERTIES('transactional'='true');

其他参数配置

#开启并发支持,支持插入、删除和更新的事务
SET hive.support.concurrency = true;
#支持ACID事务的表必须为分桶表
SET hive.enforce.bucketing = true;
#开启事物需要开启动态分区非严格模式
SET hive.exec.dynamic.partition.mode = nonstrict;
#设置事务所管理类型为 org. apache.hive.q1. lockage. DbTxnManager
#原有的org. apache. hadoop.hive.q1.1 eckmar. DummyTxnManager不支持事务
SET hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
#开启在相同的一个 meatore实例运行初始化和清理的线程
SET hive.compactor.initiator.on = true;
#设置每个 metastore实例运行的线程数 hadoop
SET hive.compactor.worker.threads = 1;

ORC存储与压缩选择

ORC格式存储与Snappy压缩

stored as orc 
tblproperties ('orc.compress'='snappy');

注意:

(1) snappy本身是不可切分的。

(2) snappy作用在文本类文件格式上不可切分。

(3) snappy压缩格式作用在parquet、orc等这些文件格式上,能够支持切分。这里切分并不是因为snappy变的可切分了,而是因为这些文件格式可以。

ORC 总结

(1)ORC是列式存储,有多种文件压缩方式,并且有着很高的压缩比。

(2)文件是可切分(Split)的。因此,在Hive中使用ORC作为表的文件存储格式,不仅节省HDFS存储资源,查询任务的输入数据量减少,使用的MapTask也就减少了。

(3)提供了多种索引,row group index、bloom filter index。

(4)ORC可以支持复杂的数据结构。

Parquet

Parquet为了使Hadoop生态系统中的任何项目都可以使用压缩的,被称为高效的列式数据表示形式。

特点

(1)跨平台。

(2)可被各种文件系统识别的格式。

(3)按列存储数据。

(4)存储元数据。

Parquet的存储结构

Parquet文件是以二进制方式存储的,所以不可以直接读取,和ORC一样,文件的元数据和数据一起存储,所以Parquet格式文件是自解析的。
在这里插入图片描述

(1)Row Group:每一个行组包含一定的行数,在一个HDFS文件中至少存储一个行组,类似于orc的stripe的概念。

(2)Column Chunk:在一个行组中每一列保存在一个列块中,行组中的所有列连续的存储在这个行组文件中。一个列块中的值都是相同类型的,不同的列块可能使用不同的算法进行压缩。

(3)Page:每一个列块划分为多个页,一个页是最小的编码的单位,在同一个列块的不同页可能使用不同的编码方式。

(4)Header:存储文件的校验码。

(5)Footer:存储文件的Schema等信息。

Parquet存储与压缩选择

Parquet格式存储与Lzo压缩

stored as parquet 
tblproperties ('parquet.compression'='lzo');

Parquet格式存储与Snappy压缩

stored as parquet 
tblproperties ('parquet.compression'='snappy');

总结

压缩方式

压缩格式是否分割平均压缩速度文本文件压缩效率Hadoop压缩样式
gzip否快高org.apache.hadoop.io.compress.GzipCodec
lzo是非常快中等com.hadoop.compression.lzo.LzoCodec
bzip2是慢非常高org.apache.hadoop.io.compress.Bzip2Codec
zlib否慢中等org.apache.hadoop.io.compress.DefaultCodec
Snappy否非常快低org.apache.hadoop.io.compress.SnappyCodec

ORC 与 Parquet 对比

ORCParquet
嵌套结构不可直接实现(map间接实现)支持嵌套结构
导入数据和数据查询速度快相比ORC慢
ACID支持不支持
更新操作支持不支持
默认压缩ZlibUncompressed
压缩格式Node、Zlib、SnappyUncompressed、Snappy、Gzip、Lzo
数据压缩最优(相比textFile50倍的磁盘空间)Parquet使用gzip压缩率高,使用lzo、snappy效率高
SQL查询较快较快
Hive存储格式之ORC File详解,什么是ORC File ORC并不是一个单纯的列式存储格式,它也遵循了先水平分区,再垂直分区的理念,采用混合存储结构。 除了Hive,目前也被Spark SQL,Flink,Presto,Impala等查询引擎支持。 阅读详情

相关推荐

Parquet与ORC:高性能列式存储格式

背景随着大数据时代的到来,越来越多的数据流向了Hadoop生态圈,同时对于能够快速的从TB甚至PB级别的数据中获取有价值的数据对于一个产品和公司来说更加重要,在Hadoop生态圈的快速发展过程中,涌现了一批开源的数据分析引擎,例如Hive、Spark SQL、Impala、Presto等,同时也产生了多个高性能的列式存储格式,例如RCFile、ORC、Parquet等,本文主要从实现的角度上对比分析

Hello World 6万+

Hive文件存储格式(建表stored as 的五种类型)

一、综述 1.建表规范 我们知道hive建表的完成格式如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY(col_name data_typ

清平乐的技术专栏 3万+

ORC文件格式解析:高效存储与查询数据

文件尾还包含了Schema Evolution信息,允许在不破坏已有数据的情况下修改ORC文件的Schema。假设我们有一个名为"employees"的表,包含了员工的姓名(name)、年龄(age)和工资(salary)信息。文件体是ORC文件中最重要的部分,它包含了实际的数据内容。ORC文件由三个主要部分组成:文件头(File Header)、文件体(File Body)和文件尾(File Footer)。文件头包含了ORC文件的元数据信息,如文件格式版本、压缩类型、列信息等。3.1 创建ORC表。

BitNetT的博客 1659

Hive 存储与压缩

通过对存储效率与压缩效率,综合时间效率,在实际生产过程中,我们一般使用 ORC 或 Parquet 作为 Hive 表的数据存储格式,而压缩方式则推荐使用SNAPPY 作为压缩策略。

JIE的博客 --- moon_coder 2574

深度解析 Hive 文件存储格式:TextFile、ORC、Parquet 的优缺点与实践指南

TextFile 是 Hive 默认的存储格式,采用纯文本行式存储,每行对应一条记录,字段之间通过分隔符(如逗号、制表符)分隔。这种格式与传统关系型数据库的文本导出格式兼容,具有极高的通用性。ORC(Optimized Row Columnar)是 Hive 团队开发的列式存储格式,通过分块(Stripes)和索引机制实现高性能查询,是 Hive 数据仓库的首选格式。Parquet 是 Apache 下的跨语言列式存储格式。

2401_83088008的博客 1519

Hive存储格式对比:ORC vs Parquet vs TextFile

本分析提供Hive三大核心存储格式(ORC、Parquet和TextFile)的系统性技术对比,从底层架构原理到实际性能表现。通过第一性原理分析,揭示每种格式的设计哲学与适用场景,建立科学的选择框架。文章深入探讨存储结构、压缩机制、查询优化技术及实际应用策略,为数据工程师提供从理论到实践的完整知识体系,助力构建高效、经济的数据存储解决方案。空间效率与时间性能权衡高压缩率减少存储空间但增加CPU开销细粒度存储提高查询效率但增加元数据复杂度访问模式适配全表扫描 vs 选择性查询。

2501_92132293的博客 1140

Hive文件存储格式(TEXTFILE 、ORC、PARQUET三者的存储格式的压缩对比和查询速度对比)

综述: HIve的文件存储格式有四种:TEXTFILE、SEQUENCEFILE、ORC、PARQUET,前面两种是行式存储,后面两种是列式存储;所谓的存储格式就是在Hive建表的时候指定的将表中的数据按照什么样子的存储方式,如果指定了A方式,那么在向表中插入数据的时候,将会使用该方式向HDFS中添加相应的数据类型。 如果为textfile的文件格式,直接load就OK,不需要走MapRed......

isea_you's blog 2万+

TP-LINK电信定制摄像头刷机教程:解锁官方功能与固件升级

固件是嵌入式设备的操作系统,控制着硬件的基础功能。其工作原理是通过更新或替换存储在设备非易失性存储器中的程序代码,从而改变设备的行为和功能。这项技术的核心价值在于赋予用户对设备的完全控制权,能够解除厂商或运营商的软件限制,实现功能自定义、性能优化和安全更新。在智能家居、网络设备和物联网领域,固件升级与刷机是常见的工程实践,用于修复漏洞、增加新特性或适配不同平台。本文聚焦于利用TFTP恢复模式这一通用网络设备维护机制,针对TP-LINK电信定制版摄像头,提供一套完整的刷机方案,将设备刷入官方通用版固件,以解除

weixin_34205826的博客 498

Hive文件存储格式(TEXTFILE 、ORC、PARQUET三者的对比)

Hive文件存储格式(TEXTFILE 、ORC、PARQUET三者的对比) 综述: HIve的文件存储格式有四种:TEXTFILE、SEQUENCEFILE、ORC、PARQUET,前面两种是行式存储,后面两种是列式存储;所谓的存储格式就是在Hive建表的时候指定的将表中的数据按照什么样子的存储方式,如果指定了A方式,那么在向表中插入数据的时候,将会使用该方式向HDFS中添加相应的数据类型。 如果为textfile的文件格式,直接load就OK,不需要走MapReduce;如果是其他的类型就需要走Ma.

9460

物理机centos7系统重启后直接进入dracut

Warning: /dev/centos/root does not exist Warning: /dev/mapper/centos-root does not exist 在shell命令行执行以下: dracut:/# lvm vgscan dracut:/# lvm vgchange -ay dracut:/# exit 之后可以正常进入系统(测试正常)。 但是重启之后依然会进入dracut模式,永久解决如下: 查看kernel文件 [root@ecs ~]# ls -ltrh /boot

魏志标的博客 1万+

2026年9月20日 2026年CSP-S初赛真题整理

这是本次考试最难的部分,涉及Gray Code(格雷码)+ 状态压缩 + 数学推导难点解决方案关键代码问题转化将得分差转化为m−2xim - 2x[i]m−2xi高效枚举Gray Code相邻状态O(1)转移奇偶判断利用奇偶性统一条件。

weixin_51184047的博客 634

hive文件存储格式orc,parquet,avro对比

orc文件存储格式 ORC文件也是以二进制方式列式存储的,所以是不可以直接读取,ORC文件也是自解析的,它包含许多的元数据,这些元数据都是同构ProtoBuffer进行序列化的。文件结构如下 ORC文件:保存在文件系统上的普通二进制文件,一个ORC文件中可以包含多个stripe,每一个stripe包含多条记录,这些记录按照列进行独立存储,对应到Parquet中的row group的概念。 文...

welcome to zdsg's csdn 3854

STM32接入CH340芯片的升级电路及初始化进入升级模式(死机)问题处理

MCU-REST 在 MCU-BOOT0 处于低电平状态下,进行下拉操作,在MCU-REST 与 MCU-BOOT0 恢复正常电平时,将导致MCU死机,MCU-REST 先于 MCU-BOOT0 下拉可解决该问题;MCU-REST 在 上升沿结束时将判断 MCU-BOOT0 的状态,MCU-BOOT0 处于高电平,MCU死机,MCU-BOOT0 处于低电平 MCU 正常;

LuDvei的博客 2493

Hive数仓中存储格式ORC和Parquet,压缩方式LZO和Snappy

在数仓中,建议大家除了接口表(从其他数据库导入或者是最后要导出到其他数据库的表),其余表的存储格式与压缩格式保持一致。 我们先来说一下目前Hive表主流的存储格式与压缩方式 文件存储格式 从Hive官网得知,Apache Hive支持Apache Hadoop中使用的几种熟悉的文件格式,如TextFile(文本格式),RCFile(行列式文件),SequenceFile(二进制序列化文件),AVRO,ORC(优化的行列式文件)和Parquet格式,而这其中我们目前使用最多的是TextFile,Se..

帅成一匹马 1万+

IGS精密星历高效获取与解析指南

本文详细介绍了IGS精密星历在高精度定位中的核心作用,对比了IGS Final、IGR和IGU等不同产品的精度与时效性差异。指南提供了从武汉大学、NASA CDDIS等数据中心高效下载数据的实战方法,并深入解析了SP3文件格式,帮助用户掌握精密星历的获取、解析与自动化处理技巧,以支持厘米级定位应用。

garlic的博客 839

【DexGraspNet与多指手抓取算法详解】第四章 抓取检测网络架构设计

图 $G=(V, E)$ 包含两类节点:指尖节点 $V_{tip} = \{v_{tip}^i\}_{i=1}^{N_{finger}}$ 与物体表面节点 $V_{obj} = \{v_{obj}^j\}_{j=1}^{N_{surf}}$。节点特征包含位置 $x \in \mathbb{R}^3$ 、法向 $n \in \mathbb{R}^3$ 及视觉特征 $f \in \mathbb{R}^d$。

VectorShift的博客 441

HIve之ORC与Parquet

Orc与parquet的区别 表类型 默认压缩 压缩格式 描述 Orc Zlib Node、Zlib、Snappy Orc可以选择Zlib或Snappy压缩,Snappy需要额外安装 Parquet Uncompressed Uncompressed、Snappy、Gzip、Lzo Parquet使用gzip压缩率高,使用lzo、snappy效率高 ORC列式存储 但支持的压缩格式有限,Orc表支持None、Zlib、Snappy压缩,默认支持Zlib压缩。但这3种压缩格式不支持切

二锅头的博客 3230

Trae的付费之路还挺艰难,茫茫多的人想付付不了(附解决办法)

不得不说,Trae国际版这个付费其实整的挺复杂的,但没办法,毕竟有政策限制,付费成功后,你就是尊贵的Pro用户啦,使用Claude 4不排队还是挺爽的,而且600次其实不算少了,有一个小技巧,简单的问题就把模型切到Gemini-2.5-flag,因为使用这个模型是没有次数限制的。其次付费的时候有个ZIP Code,这东西也是个迷之存在,有的地区节点需要填,有的不需要,如果你选到了不需要填的节点,那很好,付费就行了,如果需要填,可以填一个51800试试。

cpp加油站的专栏 5881

hive文件存储格式orc和parquet详解

hive orc parquet

a123op2346的博客 4867

进阶05:Labview与汇川PLC通过OPC UA通信(AM500系列)

本文介绍了LabVIEW与汇川PLC通过OPC UA通信的实现方法。主要内容包括:1)编写汇川AM521 PLC结构化文本程序,配置OPC UA服务器并导出变量;2)使用UaExpert客户端测试读取PLC变量;3)开发C#封装库实现OPC UA连接、读写和订阅功能;4)在LabVIEW中创建通信类,封装dll功能;5)设计LabVIEW界面实现变量读写和PLC程序触发。最终实现了PLC变量监控、数据读写及Y1-Y4输出控制功能,为自动化系统开发提供了基础框架。

weixin_38637405的博客 1307

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

RC ORC Parquet之大数据文件存储格式的一哥之争

背 景   大数据如火如荼的发展中,以hadoop集群为基础的数据存储和计算框架也日新月异的精进,而如何减少存储空间又提升计算效率,一直是大数据集群老生常谈的问题,今天就一起聊聊最基本的大数据文件存储格式的区别对比,尤其是Hive建表的时候需要选择文件存储格式最为常用,而为什么单独拎出来说RC, ORC,Parquet文件呢?是因为这三者是当今Hive建表使用频率最多,效率相对成熟稳定,资历也比较老的三位帅哥,而究竟谁才是真正的数据文件存储格式的一哥呢,请我们一探究竟。 最大的谎言 图1 存储文件最大的谎

LXWalaz1s1s的博客 1883

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Hive中的文件存储格式TEXTFILE、SEQUENCEFILE、RCFILE、ORCFILE、Parquet 和 AVRO使用与区别详解

前言 Hive中常用的文件存储格式有:TEXTFILE、SEQUENCEFILE、RCFILE、ORC、PARQUET,AVRO。前面两种是行式存储,后面两种是列式存储;所谓的存储格式就是在Hive建表的时候指定的将表中的数据按照什么样子的存储方式,如果指定了A方式,那么在向表中插入数据的时候,将会使用该方式向HDFS中添加相应的数据类型。 如果为textfile的文件格式,直接load就OK,不需要走MapReduce;如果是其他的类型就需要走MapReduce了,因为其他的类型都涉及到了文件的压.

weixin_43230682的博客 4728

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

linux怎么看文件是否orc格式,hive文件存储格式orc,parquet,avro对比

orc文件存储格式ORC文件也是以二进制方式列式存储的,所以是不可以直接读取,ORC文件也是自解析的,它包含许多的元数据,这些元数据都是同构ProtoBuffer进行序列化的。文件结构如下ORC文件:保存在文件系统上的普通二进制文件,一个ORC文件中可以包含多个stripe,每一个stripe包含多条记录,这些记录按照列进行独立存储,对应到Parquet中的row group的概念。文件级元数据:...

weixin_39836530的博客 1206

Hive性能提升利器:深度解析文件存储格式选择,ORC与Parquet为何成为首选?

在大数据技术快速演进的今天,Hive作为构建在Hadoop之上的数据仓库工具,在企业级数据处理中依然占据着核心地位。根据IDC最新报告,2025年全球数据总量预计将突破250ZB,其中企业级结构化数据占比超过40%,这使得数据存储与处理效率成为企业数字化转型的核心挑战。然而,许多用户在使用Hive时往往忽略了其底层文件存储格式的重要性,而这恰恰是决定数据处理效率的关键因素之一。文件存储格式不仅直接关系到存储空间的利用效率,更对查询性能、数据压缩、乃至整个数据管道的吞吐量产生深远影响。

zuiyuelong的博客 1294

Hive 的文件存储格式怎么选择?

前言 本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系 正文 说明 Hive支持的存储数的格式常见的有: TEXTFILE 、 SEQUENCEFILE 、 ORC 、 PARQUET 。 其中 TEXTFILE 为默认格式,建表时默认为这个格式,导入数据时会直接把数据文件拷贝到 hdfs 上不进行处理。 SEQUENCEFILE 、 ORC 、 PARQUE

Shockang的博客 3万+

ORC 和 Parquet比较入门

ORC 和 Parquet 都是 Hadoop 生态系统中流行的开源列文件存储格式,在效率和速度方面非常相似,最重要的是,它们旨在加快大数据分析工作负载。使用 ORC 文件与处理 Parquet 文件一样简单,因为它们提供了高效的读写功能,比基于行的对应文件更高效。两者都有其优缺点,很难找出哪一个比另一个更好。让我们更好地看看它们。我们先从 ORC 开始,然后转到 Parquet。 ORC ORC (Optimized Row Columnar),是专为 Hadoop 工作负载设计的免费开源列存储格式。正如

鸭梨的博客 5592
上一篇: DataX(MySQL同步数据到Doris)
下一篇: 写给刚入学大数据专业或迷茫在为几两碎银转行的你
大数据左右手
博客等级 码龄9年 475粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值