Apache Kylin权威指南1.3 Apache Kylin的工作原理
1.3 Apache Kylin的工作原理
Apache Kylin的工作原理本質上是MOLAP(Multidimensional Online Analytical Processing)Cube,也就是多維立方體分析。這是數據分析中相當經典的理論,在關系數據庫年代就已經有了廣泛的應用,下面將對其做簡要介紹。
1.3.1 維度和度量簡介
在說明MOLAP Cube之前需要先介紹一下維度(Dimension)和度量(Measure)這兩個
概念。
簡單來講,維度就是觀察數據的角度。比如電商的銷售數據,可以從時間的維度來觀察(如圖1-2的左側所示),也可以進一步細化,從時間和地區的維度來觀察(如圖1-2的右側所示)。維度一般是一組離散的值,比如時間維度上的每一個獨立的日期,或者商品維度上的每一件獨立的商品。因此統計時可以把維度值相同的記錄聚合在一起,然后應用聚合函數做累加、平均、去重復計數等聚合計算。
?
圖1-2 維度和度量的例子
度量就是被聚合的統計值,也是聚合運算的結果,它一般是連續的值,如圖1-2中的銷售額,抑或是銷售商品的總件數。通過比較和測算度量,分析師可以對數據進行評估,比如今年的銷售額相比去年有多大的增長,增長的速度是否達到預期,不同商品類別的增長比例是否合理等。
1.3.2 Cube和Cuboid
有了維度和度量,一個數據表或數據模型上的所有字段就可以分類了,它們要么是維度,要么是度量(可以被聚合)。于是就有了根據維度和度量做預計算的Cube理論。
給定一個數據模型,我們可以對其上的所有維度進行組合。對于N個維度來說,組合的所有可能性共有2N種。對于每一種維度的組合,將度量做聚合運算,然后將運算的結果保存為一個物化視圖,稱為Cuboid。所有維度組合的Cuboid作為一個整體,被稱為Cube。所以簡單來說,一個Cube就是許多按維度聚合的物化視圖的集合。
下面來列舉一個具體的例子。假定有一個電商的銷售數據集,其中維度包括時間(Time)、商品(Item)、地點(Location)和供應商(Supplier),度量為銷售額(GMV)。那么所有維度的組合就有24=16種(如圖1-3所示),比如一維度(1D)的組合有[Time]、[Item]、[Location]、[Supplier]4種;二維度(2D)的組合有[Time, Item]、[Time, Location]、[Time、Supplier]、[Item, Location]、[Item, Supplier]、[Location, Supplier]6種;三維度(3D)的組合也有4種;最后零維度(0D)和四維度(4D)的組合各有1種,總共就有16種組合。
?
圖1-3 一個四維Cube的例子
計算Cuboid,即按維度來聚合銷售額。如果用SQL語句來表達計算Cuboid [Time, Loca-tion],那么SQL語句如下:
select Time, Location, Sum(GMV) as GMV from Sales group by Time, Location
將計算的結果保存為物化視圖,所有Cuboid物化視圖的總稱就是Cube。
1.3.3 工作原理
Apache Kylin的工作原理就是對數據模型做Cube預計算,并利用計算的結果加速查詢,具體工作過程如下。
1)指定數據模型,定義維度和度量。
2)預計算Cube,計算所有Cuboid并保存為物化視圖。
3)執行查詢時,讀取Cuboid,運算,產生查詢結果。
由于Kylin的查詢過程不會掃描原始記錄,而是通過預計算預先完成表的關聯、聚合等復雜運算,并利用預計算的結果來執行查詢,因此相比非預計算的查詢技術,其速度一般要快一到兩個數量級,并且這點在超大的數據集上優勢更明顯。當數據集達到千億乃至萬億級別時,Kylin的速度甚至可以超越其他非預計算技術1000倍以上。
總結
以上是生活随笔為你收集整理的Apache Kylin权威指南1.3 Apache Kylin的工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mahout的推荐系统
- 下一篇: 《Haskell趣学指南》—— 第2章,