关于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. 为ASP.NET MVC应用程序使用高级功能

    为ASP.NET MVC应用程序使用高级功能 这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译, ...

  2. ACE编译运行错误解决

    使用VS2010编译运行ACE版本号为6.0.1 按照网上步骤添加config.h,在ACE_wrappers/ace目录下 ,新建 config.h 文件加入以下内容: #include " ...

  3. linux extract rar files

    Extract rar-archives If you need to extract rar files in Linux, you have to download and install unr ...

  4. Google Adsense(Google网站联盟)广告申请指南

    Google AdSense 是一种获取收入的快速简便的方法,适合于各种规模的网站发布商.它可以在网站的内容网页上展示相关性较高的 Google 广告,并且这些广告不会过分夸张醒目.由于所展示的广告同 ...

  5. 设计师和开发人员更快完成工作需求的20个惊人的jqury插件教程(上)

    [转] 设计师和开发人员更快完成工作需求的20个惊人的jqury插件教程(上) jquery的功能总是那么的强大,用他可以开发任何web和移动框架,在浏览器市场,他一直是占有重要的份额,今天,就给大家 ...

  6. SpringMVC入门笔记一

    SpringMVC优势    性能比struts2好    简单 便捷 易学    和Spring无缝集成(使用spring ioc aop)    约定优于配置    能够简单进行Junit测试   ...

  7. 闭包、lambda和interface

    闭包.lambda和interface 人们都很喜欢讨论闭包这个概念.其实这个概念对于写代码来讲一点用都没有,写代码只需要掌握好lambda表达式和class+interface的语义就行了.基本上只 ...

  8. html5基础的常用的技巧

    html5基础的常用的技巧 1. 新的Doctype声明 XHTML的声明太长了,我相信很少会有前端开发人员能手写出这个Doctype声明. <!DOCTYPE html PUBLIC &quo ...

  9. Arduino 各种模块篇 粉尘传感器 dust sensor 空气质量检测

    Testing a sensor from here. http://www.seeedstudio.com/wiki/Grove_-_Dust_Sensor It's a dust sensor. ...

  10. WCF 学习笔记之双工实现

    WCF 学习笔记之双工实现 其中 Client 和Service为控制台程序 Service.Interface为类库 首先了解契约Interface两个接口 using System.Service ...