ORC文件格式

ORC文件格式

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
在Hive版本0.11.0中引入。

所述***优化行柱状(ORC)***文件格式提供了存储数据蜂房一种高度有效的方法。它旨在克服其他Hive文件格式的限制。当Hive读取,写入和处理数据时,使用ORC文件可以提高性能。

例如,与RCFile格式相比,ORC文件格式具有许多优点,例如:

1.单个文件作为每个任务的输出,这减少了NameNode的负载
2.Hive类型支持包括datetime,decimal和复杂类型(struct,list,map和union)
3.存储在文件中的轻量级索引
①跳过不传递谓词过滤的行组
②寻求一个特定的行
4.基于数据类型的块模式压缩
①整数列的行程编码
②字符串列的字典编码
5.使用单独的RecordReaders并发读取同一文件
6.能够在不扫描标记的情况下分割文件
7.限制了读或写所需的内存量
8.使用Protocol Buffers存储的元数据,允许添加和删除字段

文件结构
ORC文件包含称为条带的行数据组以及文件页脚中的辅助信息。在文件的末尾,postscript保存压缩参数和压缩页脚的大小。

默认条带大小为250 MB。大条带大小可实现HDFS的大量高效读取。

文件页脚包含文件中的条带列表,每个条带的行数以及每列的数据类型。它还包含列级聚合计数,最小值,最大值和总和。

此图说明了ORC文件结构:

ORC文件格式_第1张图片
条纹结构
如图所示,ORC文件中的每个条带都包含索引数据,行数据和条带页脚。

该条纹页脚包含流位置的目录。行数据用于表扫描。

索引数据包括每列的最小值和最大值以及每列中的行位置。(也可以包括位字段或布隆过滤器。)行索引条目提供偏移,使得能够在解压缩块内寻找正确的压缩块和字节。请注意,ORC索引仅用于选择条带和行组,而不用于回答查询。

尽管条带大小较大,但具有相对频繁的行索引条目使得条带内的行跳过能够快速读取。默认情况下,可以跳过每10,000行。

通过基于过滤谓词跳过大量行的功能,您可以对其辅助键上的表进行排序,从而大大缩短执行时间。例如,如果主分区是事务日期,则可以按状态,邮政编码和姓氏对表进行排序。然后在一个状态中查找记录将跳过所有其他状态的记录。

ORC规范中给出了格式的完整规范。

你可能感兴趣的:(Hive)