Apache Kylin 入門 4 - 構建 Model

Apache Kylin 入門系列目錄數據庫

1、從 Hive 中加載表

從 Hive 中導入表定義的具體步驟以下:編程

  1. 登陸系統:http://ip:7070/kylin
  2. 主界面頂端左側網站 Logo 下點擊加號 「」 以新建項目;
  3. 在彈出的窗口中,輸入項目名稱(必選)和項目描述, 點擊「肯定」按鈕,完成項目建立;
  4. 在網站 Logo 的右側的下拉框中選擇建立的項目,點擊 「Model」 菜單;
  5. 點擊「Data Source」選項卡,在 Tables 後面有三個按鈕,第一個深藍色按鈕表示根據表名從 Hive 中導入表;第二個淺藍色按鈕點擊後能夠以可視化的方式從 Hive 選擇須要導入的表;
  6. 點擊淺藍色按鈕,從 Hive 中選擇須要導入的表,選擇完畢後點擊右下角的「Sync」按鈕便可完成 Hive 表的導入。

導入表定義的界面有一個選擇框 Calculate column cardinality,勾選後系統會計算 Hive 表每一列的基數,基數是指數據集中出現的不一樣值的個數,例如「國家」是一個維度,若是有 200 個不一樣的值,那麼此維度的基數就是 200。架構

從 Hive 中導入表定義

2、建立 Model

點擊 「Models」 選項卡,能夠看到項目已建立的 Models 以及 Cubes,點擊 「+ New」 按鈕,選擇 「New Model」 便可打開建立 Model 的窗口。因爲數據模型的差別,本文不介紹具體的案例,下面將主要介紹建立 Model 過程當中遇到的各類概念。post

一、Model Info

Model Info 主要是填寫 Model 的基本信息,其中 「Model Name」 是必填項,模型名稱有兩點須要注意:優化

  1. 模型名稱是全局惟一的,也就是說即使你新建了一個工程,你的模型名稱也不可以重複;
  2. 模型一旦建立後,模型名稱沒法被修改。

填寫 Model 的基本信息

二、Data Model

Data Model 主要是構建總體的數據模型,不管你的數據是星型模型或者是雪花模型,須要在這個地方創建數據表之間的關係。網站

2.一、選擇事實表

創建數據模型的第一步是選擇事實表,選擇完成後點擊 「Add Lookup Table」 按鈕設置事實表與維度表之間的關係。 this

選擇事實表

2.二、創建數據關係

對 「Add Lookup Table」 頁面的幾點說明:編碼

  1. 數據關係不只僅是事實表與維度表之間(星型模型),維度表和維度表之間(雪花模型)也能夠創建聯繫;
  2. 表與表之間的鏈接添加有三種:「Left Join」、「Inner Join」、「Right Join」;
  3. Skip snapshot for this lookup table 選項指的是是否跳過生成 snapshotTable,因爲某些 Lookup 表特別大(大於 300M),若是某一個維度的基數比較大 ,可能會致使內存出現 OOM,因此在建立 snapshotTable 的時候會限制原始表的大小不能超過配置的一個上限值(kylin.snapshot.max-mb,默認值300);
  4. 跳過構建 snapshot 的 lookup 表將不能搜索,同時不支持設置爲衍生維度(Derived)
  5. 大部分狀況下都是使用 「Left Join」,其餘兩種 Join 方式不是很經常使用。

創建數據關係

2.三、完成表關係構建

經過上述的操做便可將事實表以及維度表聯繫起來,構成一個數據模型。設計

完成表關係構建

三、Dimensions

在 Dimensions 頁面選擇可能參與計算的維度,這裏被選擇的只是在 Cube 構建的時候擁有被選擇資格的維度,並非最後參與 Cube 構建的維度,推薦將維度表中的字段都選擇上3d

通常而言,日期、商品種類、區域等會做爲維度。

選擇可能參與計算的維度

四、Measures

在 Measures 頁面選擇可能用於計算的度量。

通常而言,銷售額、流量、溫溼度等會做爲度量。

選擇可能用於計算的度量

五、Settings

在 Settings 頁面能夠設置分區以及過濾條件,其中分區是爲了系統能夠進行增量構建而設計的,目前 Kylin 支持基於日期的分區,在 「Partition Date Column」 後面選擇事實表或者維度表中的日期字段,而後選擇日期格式便可;過濾條件設置後,Kylin 在構建的時候會選擇符合過濾條件的數據進行構建。

須要注意的幾點:

  1. 時間分區列能夠支持日期或更細粒度的時間分區;
  2. 時間分區列支持的數據類型有 time/date/datetime/integer等;
  3. 過濾條件不須要寫 WHERE
  4. 過濾條件不能包含日期維度。

六、Save

最後保存便可完成 Model 的建立,你能夠打開 Model 中的 Visualization 標籤頁查詢模型的錶鏈接狀況。

查看 Model 錶鏈接狀況

3、Snapshot Table

每個 Snapshot 是和一個 Hive 維度表對應的,生成的過程是:

  1. 從原始的hive維度表中順序得讀取每一行每一列的值;
  2. 使用 TrieDictionary 方式對這些全部的值進行編碼(一個值對應一個 Id);
  3. 再次讀取原始表中每一行的值,將每一列的值使用編碼以後的 Id 進行替換,獲得了一個只有 Id 的新表;
  4. 同時保存這個新表和 Dictionary 對象(Id 和值的映射關係)就可以保存整個維度表;
  5. Kylin 將這個數據存儲到元數據庫中。

Any Code,Code Any!

掃碼關注『AnyCode』,編程路上,一塊兒前行。

相關文章
相關標籤/搜索