在查询中对一个字段指定的多个条件的取值之间满足( )关系。
在查询中对一个字段指定的多个条件的取值之间满足(ORC )关系。
一、ORC文件格式
ORC文件也是以二进制方式存储的,所以是不可以直接读取,ORC文件也是自解析的,它包含许多的元数据,这些元数据都是同构ProtoBuffer进行序列化的。ORC的文件结构如下图
在ORC文件中保存了三个层级的统计信息,分别为 文件级别、stripe级别和row group 级别的,他们都可以用来根据Search ARGuments( 谓词下推条件 )判断是否可以跳过某些数据,在统计信息中都包含成员数和是否有null值,并且对于不同类型的数据设置一些特定的统计信息。
(1)file level
在ORC文件的末尾会记录文件级别的统计信息,会记录整个文件中columns的统计信息。这些信息主要用于查询的优化,也可以为一些简单的聚合查询比如max, min, sum输出结果。
(2)stripe level
ORC文件会保存每个字段stripe级别的统计信息,ORC reader使用这些统计信息来确定对于一个查询语句来说,需要读入哪些stripe中的记录。比如说某个stripe的字段max(a)=10,min(a)=3,那么当where条件为a >10或者a <3时,那么这个stripe中的所有记录在查询语句执行时不会被读入。
(3)row level
为了进一步的避免读入不必要的数据,在逻辑上将一个 column的index以一个给定的值(默认为10000,可由参数配置)分割为多个index组(也就是对每一列的分组数据建立索引,这样能近一步减少不必要的查询) 。