閱讀Interactive Analysis of Web-Scale Datasets紙,我碰到了重複和定義水平的概念。
雖然我理解這兩者的必要性,爲了能夠消除事件的歧義,它將重複和定義級別附加到每個值。Dremel - 重複和定義水平
什麼我不清楚他們是如何計算的水平...
它說:
考慮網絡場碼如圖2所示。它在r1中發生三次。發生的'en-us'和'en'在第一個名字中,而'en-gb'在第三個名字中。爲了消除這些事件,我們給每個值添加重複級別。它告訴我們在該領域的重複領域中重複了這個值。
的科幻場路徑Name.Language.Code包含兩個科幻反覆的視場,名稱和語言。因此Code的重複級別在0到2之間;等級0表示新記錄的開始。現在假設我們正在從上面掃描記錄r1。當我們遇到'en-us'時,我們沒有看到任何重複的字段,即重複級別爲0.當我們看到'en'時,現場語言已經重複,因此重複級別爲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
德網絡nition水平。具有路徑p的字段的每個值,尤其是每個NULL都有一個定義級別,用於指定p中有多少可能未定義的字段(因爲它們是可選的或重複的)實際上存在於記錄中。
爲什麼那麼定義級別是2? 是不是路徑Name.Language
包含兩個字段Code
和Country
其中只有1是optional\repeated
?
在https://blog.twitter.com/2013/dremel-made-simple-with-parquet上有重複和定義級別的另一個很好的解釋,它也許值得一讀。 – Zoltan
@Zoltan是的,我已經閱讀過它。所以有些句子有點不清楚,總的來說這是一個很好的解釋。我很驚訝在這個問題之前沒有dremel標籤... –