日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache Kylin原理学习之Cube的创建与Build

發布時間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Kylin原理学习之Cube的创建与Build 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:http://lxw1234.com/archives/2016/05/655.htm
Cube是一種典型的多維數據分析技術,一個Cube可以有多個事實表,多個維表構成。如果您還不了解這些概念,建議您搜索下數據倉庫、OLAP、Cube、星型模型、事實表、維度表等等。比如一個簡單例子,分析網站流量的Cube,包含一個事實表和四個維度表:
事實表可能有以下字段:
天、來源ID、瀏覽器ID、操作系統ID、PV、PageNumber等等;
其中,小時、來源ID、瀏覽器ID、操作系統ID 為維度;
PV、PageNumber為指標;
一般事實表中的維度都采用外鍵ID的形式,一來可以節省存儲,也可以很好的適用于其他分析工具;
維度表包括:
時間維表:年、月、日,其中天為最細粒度,也為該表主鍵;
訪問來源維表:來源ID、來源名稱;
瀏覽器維表:瀏覽器ID、瀏覽器名稱、etc.
操作系統維表:操作系統ID、操作系統名稱、etc.
事實表中的維度,分別與這四張維度表,通過主外鍵的方式關聯。
Kylin中的Cube亦是這種模型。

創建Cube

之前的文章《分布式大數據多維分析(OLAP)引擎Apache Kylin安裝配置及使用示例》介紹過在Kylin中定義數據模型和Cube。

Build Cube

定義好Cube之后,Apache Kylin通過MapReduce,將存儲在Hive中的事實表和維度表,轉換成Cube,存儲在HBase中,以實現快速分析查詢,整個過程如下圖所示:

kylin

STEP1. 根據Cube定義的事實表和維度,在Hive中生成一張中間表;

Create Intermediate Flat Hive Table;

STEP2. 使用MapReduce,從事實表中抽取維度的Distinct值,并以字典樹的方式壓縮編碼,同時也對所有維度表進行壓縮編碼,生成維度字典;

Extract Fact Table Distinct Columns

Build Dimension Dictionary

STEP3. 計算和統計所有的維度組合,并保存,其中,每一種維度組合,稱為一個Cuboid,后面會詳細介紹。

Save Cuboid Statistics

STEP4. 創建HBase Table;

Create HTable

STEP5. 利用step1中間表的數據,使用MapReduce,生成每一種維度組合(Cuboid)的數據;

Build Base Cuboid Data;

Build N-Dimension Cuboid Data : 7-Dimension;

Build N-Dimension Cuboid Data : 6-Dimension;

。。。。。。

Build N-Dimension Cuboid Data : 2-Dimension;

Build Cube;

STEP6. 將Cuboid數據轉換成HFile,并導入到HBase Table中:

Convert Cuboid Data to HFile;

Load HFile to HBase Table;

STEP7. 更新Cube信息,清理中間表:

Update Cube Info;

Garbage Collection;

整個Build過程結束。

關于維度組合Cuboid

Kylin中Cube的Build過程,其實是將所有的維度組合事先計算,存儲于HBase中,以空間換時間,HTable對應的RowKey,就是各種維度組合,指標存在Column中,這樣,將不同維度組合查詢SQL,轉換成基于RowKey的范圍掃描,然后對指標進行匯總計算。

理論上來說,一個N維的Cube,便有2的N次方種維度組合,參考網上的一個例子,一個Cube包含time, item, location, supplier四個維度,那么組合(Cuboid)便有16種:

kylin

一個Cube中,當維度數量N超過一定數量后,空間以及計算消耗將會非常大,Kylin在定義Cube時候,可以將維度拆分成多個聚合組(Aggregation Groups),只在組內計算Cube,聚合組內查詢效率高,跨組查詢效率較差,所以需要根據業務場景,將常用的維度組合定義到一個聚合組中,提高查詢性能,這也是Kylin中查詢性能優化的一個重要方面。

后續將繼續學習Kylin的原理及優化。

總結

以上是生活随笔為你收集整理的Apache Kylin原理学习之Cube的创建与Build的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。