Kylin工作原理

2021-08-08 14:47:21 字數 1617 閱讀 3214

1.維度和度量

維度:觀察資料的角度,一般是一組離散的值,通常是資料記錄的乙個屬性。

度量:被聚合的統計值,也是聚合運算的結果,一般是連續的值;基於資料所計算出來的考量值,通常是乙個數值。

在乙個sql查詢中,group by的屬性通常就是維度,而所計算的值則是度量。

2.工作原理

對資料模型做cube預計算,並利用計算的結果加速查詢

a)指定資料模型,定義維度和度量

b)預計算cube,計算所有cuboid並儲存為物化檢視

c)執行查詢時,讀取cuboid,運算,產生查詢結果

由於kylin的查詢過程不會掃瞄原始記錄,而是通過預計算預先完成表的關聯、聚合等複雜運算,並利用預計算的結果來執行查詢,因此相比非預計算的查詢技術,其速度一般要快一到兩個數量級。

3.事實表和維度表

事實表(fact table)是指儲存有事實記錄的表;記錄在不斷地動態增長,所以體積通常遠大於其他表。

維度表(dimension table)/維表/查詢表(lookup table),是與事實表相對應的一種表;它儲存了維度的屬性值,可以跟事實表做關聯表;相當於將事實表上經常重複出現的屬性抽取、規範出來用一張表進行管理。

4.cube、cuboid和cube segment

cube(data cube),即資料立方體,可以對原始資料建立多維度索引。

cuboid,在某一種維度組合下所計算的資料。

cube segment針對資料來源中的某乙個片段,計算出來的cube資料。通常資料倉儲中的資料數量會隨著時間的增長而增長,而cube segment也是按時間順序來構建的。

5.星形模型

星形模型,一張事實表,以及零個或多個維度表;事實表與維度表通過主鍵外來鍵相關聯,維度表之間沒有關聯;

雪花模型,星形模型中某些維度表再做規範,抽取成更細的維度表,然後讓維度表之間也進行關聯;

星座模型,包含了多個事實表,二維度表是公用的,可以共享。

kylin只支援星形模型,其他模型可以通過一定的轉換,變為星形模型。

6.維度表設計

a)具有資料的一致性,主鍵值必須是唯一的;kylin會進行檢查,如果有兩行的主鍵值相同則會報錯。

b)維度表越小越好,因為kylin會將維度表載入到記憶體中供查詢,預設的閾值300mb。

c)改變頻率低,kylin會在每次構建中檢視重用維度表的快照。

d)維度表最好不要是hive檢視(view),每次都需要將檢視進行物化,從而導致額外的時間開銷。

7.hive表分割槽

kylin支援增量的cube構建,通常是按時間屬性來增量地從hive表中抽取資料。如果hive表正好是按此時間屬性做分割槽的話,那麼就可以利用到hive分割槽的好處,每次在hive構建的時候都可以直接跳過不相干日期的資料,節省cube構建的時間。這樣的列在kylin裡也稱為分割時間列(partition time column),通常它應該也是hive表的分割槽列。

8.維度基數

維度的基數(cardinality),該維度在資料集中出現的不同值的個數;基數超過一百萬的維度通常被稱為超高基數維度(ultra high cardinality,uhc)。

超高基數維度越多,cube膨脹概率就越高。

計算技術方法:2.3.1

a)簡單方法,hive執行count distinct

Kylin的工作原理

apache kylin的工作原理本質上是 molap 多維立方體分析 apache kylin的工作原理是對資料模型做cube預計算,並利用計算的結果加速查詢。具體工作過程如下。高效olap分析 kylin在設計時,刻意對查詢使用者遮蔽了cube的概念 分析師只需要理解簡單的關係模型就可以使用ky...

小白篇 十六 大資料Kylin工作原理

獲取原文 簡短介紹 之前apache kylin相關分享 安裝篇 cdh集群下apache kylin3.1.0安裝 問題篇 關於kylin安裝過程遇到的5個問題 小白篇 十五 大資料kylin介紹和使用 說明 kylin從2013年到現今,進行了4次大版本的迭代。其中引入了很多新特性,還是值得我們...

kylin的原理理解

kylin是乙個大資料的olap引擎,是由ebay 中國團隊研發的,是第乙個真正由中國人自己主導 從零開始 自主研發 並成為apache頂級開源專案,hive的效能比較慢,支援sql靈活查詢,特別慢,hbase的效能快,原生不支援sql,kylin是將先將資料進行預處理 預計算 將預處理的結果放在h...