【发布时间】:2017-09-19 22:58:01
【问题描述】:
阅读Interactive Analysis of Web-Scale Datasets论文,我碰到了重复和定义级别的概念。
虽然我理解这两个的必要性,为了能够消除出现的歧义,它为每个值附加了重复和定义级别。
我不清楚他们是如何计算等级的......
上面写着:
考虑图 2 中的字段代码。它在 r1 中出现了 3 次。出现“en-us”和“en”在第一个名称中,而“en-gb”出现在第三个名称中。为了消除这些事件的歧义,我们为每个值附加了一个重复级别。它告诉我们值在字段路径中的哪个重复字段中重复。
字段路径 Name.Language.Code 包含两个重复的字段,名称和语言。因此,代码的重复级别介于 0 和 2 之间;级别 0 表示新记录的开始。现在假设我们正在自上而下地扫描记录 r1。当我们遇到“en-us”时,我们没有看到任何重复的字段,即重复级别为0。当我们看到“en”时,字段Language已经重复,所以repetitionlevel是2。
我无法理解它,Name.Language.Code 中的 r1 具有 en-us 和 en 值。第一个r = 0 和第二个r = 2 是因为重复了两个定义吗? (语言和代码)?
如果是:
Name
Language
Code: en-us
Name
Language
Code: en
Name
Language
Code: en-gb
会吗?
0 2
1 2
2 2
定义级别。具有路径 p 的字段的每个值,特别是。每个 NULL 都有一个定义级别,指定 p 中有多少可以未定义的字段(因为它们是可选的或重复的)实际上存在于记录中。
那么为什么定义级别是 2 呢?
路径Name.Language不是包含两个字段Code和Country,其中只有1是optional\repeated吗?
【问题讨论】:
-
blog.twitter.com/2013/dremel-made-simple-with-parquet 对重复和定义级别有另一个很好的解释,可能也值得一读。
-
@Zoltan 是的,我已经读过了。所以有些句子有点不清楚,总的来说这是一个很好的解释。我很惊讶在这个问题之前没有
dremel标签...... -
这里还有一个描述,不,算法不是微不足道的:github.com/julienledem/redelm/wiki/…
标签: algorithm data-structures dataset parquet dremel