一、关于ORC
Apache ORC(Optimized Row Columnar,优化行列)是Apache Hadoop生态系统的一种免费、开源、面向列的数据存储格式。类似于Hadoop生态系统中可用的其他列存储文件格式,例如RCFile和Parquet。它与Hadoop环境中的大多数数据处理框架兼容。2013年2月,Hortonworks与Facebook合作宣布了“优化行列”(ORC)文件格式。一个月后,Cloudera和Twitter开发了Apache Parquet格式。
二、ORC
最小:
最快:ORC较其他文件格式压缩比高,查询任务的输入数据量减少,使用的Task相应减少,所以快。
它并不是一个单纯的列式存储格式,仍然是首先根据行组分割整个表,在每一个行组内进行按列存储。ORC文件是自描述的,它的元数据使用Protocol Buffers序列化,并且文件中的数据尽可能的压缩以降低存储空间的消耗,目前也被Spark SQL、Presto等查询引擎支持,但是Impala对于ORC目前没有支持,仍然使用Parquet作为主要的列式存储格式。
优势:
- ORC是列式存储,有多种文件压缩方式,并且有着很高的压缩比。
- 文件是可切分(Split)的。因此,在Hive中使用ORC作为表的文件存储格式,不仅节省HDFS存储资源,查询任务的输入数据量减少,使用的MapTask也就减少了。
- 提供了多种索引,row group index、bloom filter index。
- ORC可以支持复杂的数据结构(比如Map等)
和Parquet不同,ORC原生是不支持嵌套数据格式的
降低Hadoop数据存储空间和加速Hive查询速度,并不是一个单纯的列式存储格式,仍然是首先根据行组分割整个表,在每一个行组内进行按列存储。
ORC中的数据以列的形式存储,首先,这会影响大小。为了确保流式读取的速度,将文件分为所谓的“条带”,每个条带都是自给自足的,即 可以分别读取(因此可以并行读取)。由于存在条带,文件大小将增加(非唯一列值将被存储几次-在找到此类值的那些条带中)-相同的``速度大小''平衡(又称折衷)。
ORC文件结构
ORC中使用了更加精确的索引信息,使得在读取数据时可以指定从任意一行开始读取,更细粒度的统计信息使得读取ORC文件跳过整个row group,ORC默认会对任何一块数据和索引信息使用ZLIB压缩,因此ORC文件占用的存储空间也更小
三、Parquet与ORC对比
Parquet文件是以二进制方式存储的,是不可以直接读取和修改的,Parquet文件是自解析的,文件中包括该文件的数据和元数据。
Parquet的schema结构
通常情况下,在存储Parquet数据的时候会按照HDFS的Block大小设置行组的大小,由于一般情况下每一个Mapper任务处理数据的最小单位是一个Block,这样可以把每一个行组由一个Mapper任务处理,增大任务执行并行度。Parquet文件的格式如下图所示。
Parquet文件结构
Apache Parquet,ORC和RCFile格式存储大数据文件的磁盘空间对比
大数据文件格式比较:Apache Parquet和ORC
Parquet设计动机是为了存储嵌套数据,可以将 ProtoBuf、Thrift、Avro 等格式的数据转换为列格式来存储,这是其最大的优势。此外,也有基本的功能,数据压缩、基本的索引功能、支持复杂类型等。也就是说:Parquet对于嵌套数据结构的支持比ORC强。
ORC是自描述的列存储,主要是在 Hive 中使用,支持数据压缩、索引功能、update 操作、ACID 操作、支持复杂类型等,其查询性能相对 Parquet 略有优势。
链接:
大数据:Hive - ORC 文件存储格式:https://www.cnblogs.com/ittangtang/p/7677912.html
ORC原理及查询优化:https://www.jianshu.com/p/0ba4f5c3f113
Parquet与ORC:高性能列式存储格式:https://blog.csdn.net/yu616568/article/details/51868447
Scala+Spark教程:RC ORC Parquet 格式比较和性能测试:http://www.bigdatastudy.net/show.aspx?id=571&cid=9
更高的压缩比,更好的性能–使用ORC文件格式优化Hive:http://lxw1234.com/archives/2016/04/630.htm
比较Hadoop中的存储格式:从ORC开始:https://habr.com/ru/company/alfastrah/blog/458552/
Apache Parquet 与Apache ORC简介:https://blog.csdn.net/kwame211/article/details/86702922
https://www.bigdataschool.ru/wiki/parquet
https://www.bigdataschool.ru/wiki/orc