Apache Kylin 入門 4 - 構建 Model

rochy_he發表於2018-10-23

Apache Kylin 入門系列目錄

一、從 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 中匯入表定義

二、建立 Model

點選 “Models” 選項卡,可以看到專案已建立的 Models 以及 Cubes,點選 “+ New” 按鈕,選擇 “New Model” 即可開啟建立 Model 的視窗。由於資料模型的差異,本文不介紹具體的案例,下面將主要介紹建立 Model 過程中遇到的各種概念。

1、Model Info

Model Info 主要是填寫 Model 的基本資訊,其中 “Model Name” 是必填項,模型名稱有兩點需要注意:

  1. 模型名稱是全域性唯一的,也就是說即便你新建了一個工程,你的模型名稱也不能夠重複;
  2. 模型一旦建立後,模型名稱無法被修改。

填寫 Model 的基本資訊

2、Data Model

Data Model 主要是構建整體的資料模型,無論你的資料是星型模型或者是雪花模型,需要在這個地方建立資料表之間的關係。

2.1、選擇事實表

建立資料模型的第一步是選擇事實表,選擇完成後點選 “Add Lookup Table” 按鈕設定事實表與維度表之間的關係。

選擇事實表

2.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.3、完成表關係構建

通過上述的操作即可將事實表以及維度表聯絡起來,構成一個資料模型。

完成表關係構建

3、Dimensions

在 Dimensions 頁面選擇可能參與計算的維度,這裡被選擇的只是在 Cube 構建的時候擁有被選擇資格的維度,並不是最後參與 Cube 構建的維度,推薦將維度表中的欄位都選擇上

一般而言,日期、商品種類、區域等會作為維度。

選擇可能參與計算的維度

4、Measures

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

一般而言,銷售額、流量、溫溼度等會作為度量。

選擇可能用於計算的度量

5、Settings

在 Settings 頁面可以設定分割槽以及過濾條件,其中分割槽是為了系統可以進行增量構建而設計的,目前 Kylin 支援基於日期的分割槽,在 “Partition Date Column” 後面選擇事實表或者維度表中的日期欄位,然後選擇日期格式即可;過濾條件設定後,Kylin 在構建的時候會選擇符合過濾條件的資料進行構建。

需要注意的幾點:

  1. 時間分割槽列可以支援日期或更細粒度的時間分割槽;
  2. 時間分割槽列支援的資料型別有 time/date/datetime/integer等;
  3. 過濾條件不需要寫 WHERE
  4. 過濾條件不能包含日期維度。

Apache Kylin 入門 4 - 構建 Model

6、Save

最後儲存即可完成 Model 的建立,你可以開啟 Model 中的 Visualization 標籤頁查詢模型的表連線情況。

檢視 Model 表連線情況

三、Snapshot Table

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

  1. 從原始的hive維度表中順序得讀取每一行每一列的值;
  2. 使用 TrieDictionary 方式對這些所有的值進行編碼(一個值對應一個 Id);
  3. 再次讀取原始表中每一行的值,將每一列的值使用編碼之後的 Id 進行替換,得到了一個只有 Id 的新表;
  4. 同時儲存這個新表和 Dictionary 物件(Id 和值的對映關係)就能夠儲存整個維度表;
  5. Kylin 將這個資料儲存到後設資料庫中。

Any Code,Code Any!

掃碼關注『AnyCode』,程式設計路上,一起前行。

Apache Kylin 入門 4 - 構建 Model

相關文章