Kylin

名詞解釋
OLAP的基本分析操作:上卷(rollup)、下鑽(drilldown)、切片切塊(slicingand dicing),原始數據經過聚合以及整理後變成一個或多個維度的視圖。
傳統OLAP根據數據存儲方式的不同分爲ROLAP(Relational OLAP)以及MOLAP(Multi-dimensionOLAP)

ROLAP 以關係模型的方式存儲用作多維分析用的數據,優點在於存儲體積小,查詢方式靈活,然而缺點也顯而易見,每次查詢都需要對數據進行聚合計算,爲了改善短板,ROLAP使用了列存、並行查詢、查詢優化、位圖索引等技術

MOLAP 將分析用的數據物理上存儲爲多維數組的形式,形成CUBE結構。維度的屬性值映射成多維數組的下標或者下標範圍,事實以多維數組的值存儲在數組單元中,優勢是查詢快速,缺點是數據量不容易控制,可能會出現維度爆炸的問題。

事實表
維度表
cube:Cube本身可以認爲是不同維度數據組成的datase
dimension:維度,每個cube有多個維度
Cuboid:Cuboid上的數據是原始數據聚合的數據
measure

hive
Hbase
rowKey:dimension
family:measure

逐層算法
逐段算法(fast cubing)

增量Cubing

Cube 優化:
Hierachy Dimension
Derived Dimension
Aggregation Group

Hierachy Dimension, 一系列具有層次關係的Dimension組成一個Hierachy, 比如年、月、日組成了一個Hierachy, 在Cube中,如果不設置Hierarchy, 會有 年、月、日、年月、年日、月日 6個cuboid, 但是設置了Hierarchy之後Cuboid增加了一個約束,希望低Level的Dimension一定要伴隨高Level的Dimension 一起出現。設置了Hierachy Dimension 能使得需要計算的維度組合減少一半。

Derived Dimension, 如果在某張維度表上有多個維度,那麼可以將其設置爲Derived Dimension, 在Kylin內部會將其統一用維度表的主鍵來替換,以此來達到降低維度組合的數目,當然在一定程度上Derived Dimension 會降低查詢效率,在查詢時,Kylin使用維度表主鍵進行聚合後,再通過主鍵和真正維度列的映射關係做一次轉換,在Kylin內部再對結果集做一次聚合後返回給用戶

Aggregation Group, 這是一個將維度進行分組,以求達到降低維度組合數目的手段。不同分組的維度之間組成的Cuboid數量會大大降低,維度組合從2的(k+m+n)次冪至多能降低到 2的k次冪加2的m次冪加2的n次冪。Group的優化措施與查詢SQL緊密依賴,可以說是爲了查詢的定製優化。 如果查詢的維度是誇Group的,那麼Kylin需要以較大的代價從N-Cuboid中聚合得到所需要的查詢結果,這需要Cube構建人員在建模時仔細地斟酌。

distinct count聚合查詢優化:

Apache Kylin 採用了HypeLogLog的方式來計算DistinctCount。好處是速度快,缺點是結果是一個近似值,會有一定的誤差。在非計費等通常的場景下DistinctCount的統計誤差應用普遍可以接受。

Fast Cubing
http://www.infoq.com/cn/articles/apache-kylin-algorithm/

http://mt.sohu.com/20160628/n456602429.shtml
早期Kylin中的cube構建
http://blog.csdn.net/yu616568/article/details/50365240

http://www.bitstech.net/2016/01/04/kylin-olap/

Kylin任務調度模塊
http://blog.csdn.net/yu616568/article/details/48104623

發佈了22 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章