Apache Kylin 入門系列目錄
- Apache Kylin 入門 1 - 基本概念
- Apache Kylin 入門 2 - 原理與架構
- Apache Kylin 入門 3 - 安裝配置引數詳解
- Apache Kylin 入門 4 - 構建 Model
- Apache Kylin 入門 5 - 構建 Cube
- Apache Kylin 入門 6 - 優化 Cube
- 基於 ELKB 構建 Kylin 查詢時間監控頁面
一、從 Hive 中載入表
從 Hive 中匯入表定義的具體步驟如下:
- 登入系統:
http://ip:7070/kylin
; - 主介面頂端左側網站 Logo 下點選加號 “+” 以新建專案;
- 在彈出的視窗中,輸入專案名稱(必選)和專案描述, 點選“確定”按鈕,完成專案建立;
- 在網站 Logo 的右側的下拉框中選擇建立的專案,點選 “Model” 選單;
- 點選“Data Source”選項卡,在 Tables 後面有三個按鈕,第一個深藍色按鈕表示根據表名從 Hive 中匯入表;第二個淺藍色按鈕點選後可以以視覺化的方式從 Hive 選擇需要匯入的表;
- 點選淺藍色按鈕,從 Hive 中選擇需要匯入的表,選擇完畢後點選右下角的“Sync”按鈕即可完成 Hive 表的匯入。
匯入表定義的介面有一個選擇框 Calculate column cardinality,勾選後系統會計算 Hive 表每一列的基數,基數是指資料集中出現的不同值的個數,例如“國家”是一個維度,如果有 200 個不同的值,那麼此維度的基數就是 200。
二、建立 Model
點選 “Models” 選項卡,可以看到專案已建立的 Models 以及 Cubes,點選 “+ New” 按鈕,選擇 “New Model” 即可開啟建立 Model 的視窗。由於資料模型的差異,本文不介紹具體的案例,下面將主要介紹建立 Model 過程中遇到的各種概念。
1、Model Info
Model Info 主要是填寫 Model 的基本資訊,其中 “Model Name” 是必填項,模型名稱有兩點需要注意:
- 模型名稱是全域性唯一的,也就是說即便你新建了一個工程,你的模型名稱也不能夠重複;
- 模型一旦建立後,模型名稱無法被修改。
2、Data Model
Data Model 主要是構建整體的資料模型,無論你的資料是星型模型或者是雪花模型,需要在這個地方建立資料表之間的關係。
2.1、選擇事實表
建立資料模型的第一步是選擇事實表,選擇完成後點選 “Add Lookup Table” 按鈕設定事實表與維度表之間的關係。
2.2、建立資料關係
對 “Add Lookup Table” 頁面的幾點說明:
- 資料關係不僅僅是事實表與維度表之間(星型模型),維度表和維度表之間(雪花模型)也可以建立聯絡;
- 表與表之間的連線新增有三種:“Left Join”、“Inner Join”、“Right Join”;
Skip snapshot for this lookup table
選項指的是是否跳過生成 snapshotTable,由於某些 Lookup 表特別大(大於 300M),如果某一個維度的基數比較大 ,可能會導致記憶體出現 OOM,所以在建立 snapshotTable 的時候會限制原始表的大小不能超過配置的一個上限值(kylin.snapshot.max-mb
,預設值300);- 跳過構建 snapshot 的 lookup 表將不能搜尋,同時不支援設定為衍生維度(Derived);
- 大部分情況下都是使用 “Left Join”,其他兩種 Join 方式不是很常用。
2.3、完成表關係構建
通過上述的操作即可將事實表以及維度表聯絡起來,構成一個資料模型。
3、Dimensions
在 Dimensions 頁面選擇可能參與計算的維度,這裡被選擇的只是在 Cube 構建的時候擁有被選擇資格的維度,並不是最後參與 Cube 構建的維度,推薦將維度表中的欄位都選擇上。
一般而言,日期、商品種類、區域等會作為維度。
4、Measures
在 Measures 頁面選擇可能用於計算的度量。
一般而言,銷售額、流量、溫溼度等會作為度量。
5、Settings
在 Settings 頁面可以設定分割槽以及過濾條件,其中分割槽是為了系統可以進行增量構建而設計的,目前 Kylin 支援基於日期的分割槽,在 “Partition Date Column” 後面選擇事實表或者維度表中的日期欄位,然後選擇日期格式即可;過濾條件設定後,Kylin 在構建的時候會選擇符合過濾條件的資料進行構建。
需要注意的幾點:
- 時間分割槽列可以支援日期或更細粒度的時間分割槽;
- 時間分割槽列支援的資料型別有
time/date/datetime/integer
等; - 過濾條件不需要寫
WHERE
; - 過濾條件不能包含日期維度。
6、Save
最後儲存即可完成 Model 的建立,你可以開啟 Model 中的 Visualization 標籤頁查詢模型的表連線情況。
三、Snapshot Table
每一個 Snapshot 是和一個 Hive 維度表對應的,生成的過程是:
- 從原始的hive維度表中順序得讀取每一行每一列的值;
- 使用 TrieDictionary 方式對這些所有的值進行編碼(一個值對應一個 Id);
- 再次讀取原始表中每一行的值,將每一列的值使用編碼之後的 Id 進行替換,得到了一個只有 Id 的新表;
- 同時儲存這個新表和 Dictionary 物件(Id 和值的對映關係)就能夠儲存整個維度表;
- Kylin 將這個資料儲存到後設資料庫中。
Any Code,Code Any!
掃碼關注『AnyCode』,程式設計路上,一起前行。