关于Parquet的详细介绍,请参考: 新一代列式存储格式Parquet,此文中对Parquet做了详细的介绍,这里不做重复介绍,但其中关于Definition Level(DL)和Repeated Level(RL)部分,比较难懂,这里做一个更加方便易懂的总结。

对DL和RL的理解,最好是文中的关于Document对象的示例,摘录如下:

一个完整的例子

本节我们使用Dremel论文中给的Document示例和给定的两个值r1和r2展示计算repeated level和definition level的过程,这里把未定义的值记录为NULL,使用R表示repeated level,D表示definition level。

这个示例及讲解已经够明白了,但对于思维不那么发达的童鞋来说,理解起来还是颇有困难的,比如说我!

首先阐明我对DL和RL的理解:

DL,Definition Level,顾名思义,即在对象树中,对与相应schema来讲,当前节点的定义深度(到节点本身),即在第几深度被定义的,如果该节点有值,那么对应的DL值就是从根节点到该节点本身的深度,如果值为NULL,则其值应该为从根节点到该节点路径的最大深度

RL, Repeated Level,顾名思义,即在对象树中,对与相应schema来讲,当前节点的“重复深度”,何谓“重复深度”,这正是通篇中最不易理解的地方。我给出自己的定义:所谓重复深度是指repeated类型节点(处于Array或List集合中的节点)记为“certainType A”相对于上一个相同schema类型节点(记为“certainType B”)而言,两者最大能在哪个Level上repeat,更通俗地讲就是指两者的“共同的相互repeated的祖先的深度”,唉,实际上还是有点绕!

举个栗子来说,如上述示例中的值为en_us的Code节点A,和值为en的Code节点B以及值为en-gb的Code节点C, 因为A在r1中首次出现,且被定义在第3深度,所以对应的RL=0,DL=3, 而B节点相对于上一相相同schema类型的节点A来说,两者只能在Language深度上被Language做repeated,而不能在Language内部作为兄弟节点进行repeate,因为而者父亲不同,所以对于B来讲,其RL值就是祖先中Language节点的深度,DL值就是B本身的深度,因为RL=2,DL=3,但是,注意到,因为schema中规定Code节点是required类型,即必填值,因此对这种类型的节点而言,其值一定被定义了,所以可以忽略DL的值,同时该列中RL最大值只到2,所以DL也取了2,其实我理解这时候DL取几都无所谓。因为DL只对repeated和optional型节点有意义。同理C节点和A、B节点最多只能在Name节点的深度上repeate,而C是在第3深度定义的,因此,RL=1,DL=3,同上述解释,DL取最大的RL,即2。

最后

对于DL,用一句话理解:这个非requied节点在第几深度被定义,DL就是几

对于RL,用一句话理解:这个repeted节点与前一个同型节点在第几深度做repeate,RL就是几

快速理解Parquet的DL和RL的更多相关文章

  1. 【转】快速理解Kafka分布式消息队列框架

     from:http://blog.csdn.net/colorant/article/details/12081909 快速理解Kafka分布式消息队列框架 标签: kafkamessage que ...

  2. Spark机器学习 Day2 快速理解机器学习

    Spark机器学习 Day2 快速理解机器学习 有两个问题: 机器学习到底是什么. 大数据机器学习到底是什么. 机器学习到底是什么 人正常思维的过程是根据历史经验得出一定的规律,然后在当前情况下根据这 ...

  3. 快速理解web语义化

    什么是Web语义化 Web语义化是指使用恰当语义的html标签.class类名等内容,让页面具有良好的结构与含义,从而让人和机器都能快速理解网页内容.语义化的web页面一方面可以让机器在更少的人类干预 ...

  4. 快速理解高性能HTTP服务端的负载均衡技术原理(转)

    1.前言 在一个典型的高并发.大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案.HTTP负载均衡的本质上是将Web用户流量进行均衡减压,因此 ...

  5. 脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)

    本文原作者阮一峰,作者博客:ruanyifeng.com. 1.前言 新一代HTTP/2 协议的主要目的是为了提高网页性能(有关HTTP/2的介绍,请见<从HTTP/0.9到HTTP/2:一文读 ...

  6. 字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8

    原作者:阮一峰(ruanyifeng.com),现重新整理发布,感谢原作者的无私分享. 1.引言 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料. 这个问题比我想象 ...

  7. [转帖]十分钟快速理解DPI和PPI,不再傻傻分不清!

    十分钟快速理解DPI和PPI,不再傻傻分不清! https://baijiahao.baidu.com/s?id=1605834796518990333&wfr=spider&for= ...

  8. 快速理解VirtualBox的四种网络连接方式

    VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...

  9. 深入浅出 1 - AI量化策略快速理解

      我们在用AI来编写量化策略过程中,主要用到了机器学习,先来从一张图直观理解什么是机器学习:人类对新问题做出有效决策依靠的是过去积累的许多经验,并对经验进行利用,而对机器来说,“经验”以“数据”方式 ...

随机推荐

  1. sql材料分级统计及汇总案例参考

    --第一步:根据系统编号.列.单价分组求和 select CLBH,DJ,sum(SL) as SL,sum(JE) as JE,Lie into #TempSZCMX from #ShouZhiCu ...

  2. POI操作EXCEL之导出Excel(设置有效性,下拉列表引用)

    本人使用的是poi-bin-3.10-FINAL-20140208.zip 版本的poi以下是程序关键代码: //需要引用的类 import java.io.File; import java.io. ...

  3. SQLSERVER 数据库性能的的基本 MVC + EF + Bootstrap 2 权限管理

    SQLSERVER 数据库性能的基本 很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据 ...

  4. IOS UI 第五篇:基本UI

    添加个导航栏:         Xib1 *xib1 = [[Xib1 alloc] initWithNibName:@"Xib1" bundle:nil];    UINavig ...

  5. Linux下监控磁盘空间的四个命令

    无论是运行简单的Linux桌面还是大型Linux服务器,都需要了解可供应用程序使用的空间,并跟踪系统的磁盘使用情况.下面介绍四个核心命令行命令来管理Linux系统上的介质环境. 一.mount命令 m ...

  6. linux挂载分区

    [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda2 36G .3G 32G % / tmpf ...

  7. 【Lotus Notes】邮件获取

    public class LotusManager { public static int bodyMaxLength, length; public static List<Entity.Lo ...

  8. Define Constraints That Are Minimal and Sufficient 设定不多不少的约束

    Define Constraints That Are Minimal and Sufficient 设定不多不少的约束   今天第二章第二节. 主管不在,然后暂时没什么任务,把第二节看了,然后整理一 ...

  9. 使用C++做算法时,对内存的管理的办法

    使用C++做算法时,对内存的管理的办法 最近老是在想C++的内存控制机制,查了一些资料所以有点想法,自己记录一下免得以后自己忘了. 1. 需求 在做线性代数的算法时,首要的就实现Matrix这个类.由 ...

  10. 批处理安装nodejs

    @echo offcd nodejsecho 正在安装nodejs-v4.2.2,请稍等...start /wait node-v4.2.2-x64.msi /qnecho 安装nodejs结束 cd ...