快速理解Parquet的DL和RL
关于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的更多相关文章
- 【转】快速理解Kafka分布式消息队列框架
from:http://blog.csdn.net/colorant/article/details/12081909 快速理解Kafka分布式消息队列框架 标签: kafkamessage que ...
- Spark机器学习 Day2 快速理解机器学习
Spark机器学习 Day2 快速理解机器学习 有两个问题: 机器学习到底是什么. 大数据机器学习到底是什么. 机器学习到底是什么 人正常思维的过程是根据历史经验得出一定的规律,然后在当前情况下根据这 ...
- 快速理解web语义化
什么是Web语义化 Web语义化是指使用恰当语义的html标签.class类名等内容,让页面具有良好的结构与含义,从而让人和机器都能快速理解网页内容.语义化的web页面一方面可以让机器在更少的人类干预 ...
- 快速理解高性能HTTP服务端的负载均衡技术原理(转)
1.前言 在一个典型的高并发.大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案.HTTP负载均衡的本质上是将Web用户流量进行均衡减压,因此 ...
- 脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)
本文原作者阮一峰,作者博客:ruanyifeng.com. 1.前言 新一代HTTP/2 协议的主要目的是为了提高网页性能(有关HTTP/2的介绍,请见<从HTTP/0.9到HTTP/2:一文读 ...
- 字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8
原作者:阮一峰(ruanyifeng.com),现重新整理发布,感谢原作者的无私分享. 1.引言 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料. 这个问题比我想象 ...
- [转帖]十分钟快速理解DPI和PPI,不再傻傻分不清!
十分钟快速理解DPI和PPI,不再傻傻分不清! https://baijiahao.baidu.com/s?id=1605834796518990333&wfr=spider&for= ...
- 快速理解VirtualBox的四种网络连接方式
VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...
- 深入浅出 1 - AI量化策略快速理解
我们在用AI来编写量化策略过程中,主要用到了机器学习,先来从一张图直观理解什么是机器学习:人类对新问题做出有效决策依靠的是过去积累的许多经验,并对经验进行利用,而对机器来说,“经验”以“数据”方式 ...
随机推荐
- .Net中批量添加数据的几种实现方法比较
在.Net中经常会遇到批量添加数据,如将Excel中的数据导入数据库,直接在DataGridView控件中添加数据再保存到数据库等等. 方法一:一条一条循环添加 通常我们的第一反应是采用for或for ...
- 1001. 杀死吸引力(3n+1)猜想 (15)(ZJUPAT 数学)
主题链接:http://pat.zju.edu.cn/contests/pat-b-practise/1001 卡拉兹(Callatz)猜想: 对不论什么一个自然数n,假设它是偶数,那么把它砍掉一半. ...
- 使用Oracle Wrap工具加密你的代码
Oracle提供Wrap工具,可以用于加密你的Package等.不过需要注意的是,加密后的代码无法解密,你需要保管好你的源代码. 以下是个例子: 1.源代码 create or replace fun ...
- [转]Android与电脑局域网共享之:Samba Server
大家都有这样的经历,通过我的电脑或网上邻居访问另一台计算机上的共享资源,虽然电脑和手机之间可以有多种数据传输方式,但通过Windows SMB方式进行共享估计使用的人并不是太多,下面我就简单介绍一下, ...
- 【推荐分享】大量JavaScript/jQuery电子书籍教程pdf合集下载
不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小 15天学会jQuery(完整版).pdf 274.79 KB 21天学通JavaScript(第2版)-顾宁燕扫描版.pdf ...
- boke
云/n 计算/v 代表/n IT/x 领域/n 向/p 集约化/v ./w 规模化/v 与/c 专业化/v 道路/n 发展/v 的/u 趋势/n ,/w 是/v IT/x 领域/n 正在/d 发生/v ...
- IOS开发小功能2:二维码扫描界面的设计(横线上下移动)
效果图如上,实现的是一个二维码扫描界面. 下面我贴出线条上下移动的代码,至于二维码的代码是用的第三方库. 首先是整体的结构: 注意下面的库文件一个都不能少,否则会报错. TLTiltHighlight ...
- memcpy的实现
memcpy的实现看起来貌似比较简单,但是也是有注意的地方! void *memcpy(void *dst, const void *src, size_t size) { //check argum ...
- 迟到的 WPF 学习 —— 控件
这一章书中内容比较多而杂,但每个对象的内容又相对简短,所以只挑选里边有代表性的内容做记录. 1. Label 控件:一个基础的简单的 ContentControl,Labe 支持快捷键文本的设置,可以 ...
- C# 号码归属地查询算法
C# 号码归属地查询算法(根据Android来电归属地二进制文件查询修改) 前言 近期有个项目需要用到号码归属查询,归属地数据库可能比不上ip138,淘宝上也有卖的-,-! 文本提供一个279188条 ...