ORC存储简介

本文介绍了ORC和Parquet两种列式存储格式,重点在于它们的起源、特性以及文件结构。ORC支持复杂的类型和ACID操作,而Parquet擅长嵌套数据的压缩和高效读取,但不支持更新操作。两者在文件结构上相似,包括行组、Stripe和Stream等概念,但Parquet缺乏内建的索引支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ORC存储

        ORC 存储源自RC这种存储格式,RC是一种列式存储引擎,主要是在压缩编码,查询性能方面做了优化,但是对schema演化支持较差.RC/ORC最初是在Hive中得到使用,最后发展势头不错,独立成一个单独的项目.Hive1.xbanbendu版本对事物和update操作的支持,便是给予ORC实现的.

       ORC发展到今天,已经具备一些非常高级的功能,比如支持update操作,支持ACID,支持struct,array复杂类型.你可以使用复杂类型构建一个类似parquet的嵌套式数据架构,但层数非常多时,写起来非常麻烦和复杂,而parquet提供的schema表达方式更容易表示出多级嵌套的数据类型.

文件结构

       ORC文件以二进制方式存储,所以是不可以直接读取,ORC文件也是自解析的,它包含许多的元数据,这些元数据都是同构ProtoBuffer进行序列化的。ORC的文件结构如下图,其中涉及到如下的概念:

ORC文件:保存在文件系统上的普通二进制文件一个ORC文件中可以包含多个stripe,每一个stripe包含多条记录,这些记录按照进行独立存储,对应到Parquet中的row group的概念。

件级元数据:包括文件的描述信息PostScript、文件meta信息、所有stripe的信息和文件schema信息。

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

stripe元数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值