1. 程式人生 > >kylin從入門到實戰:實際案例

kylin從入門到實戰:實際案例

排版亂?請移步原文獲得更好的閱讀體驗

前面兩篇文章已經介紹了kylin的相關概念以及cube的一些原理,這篇文章將從一個實際的案例入手,介紹如何在kylin平臺上建立一個多維分析專案。

1.建立project

進入kylin操作介面,如果沒有project可以建立,kylin裡面可以建立多個project,有效的把各種業務資料分析隔離開來。如圖:
project
如下,填寫project name,description可以不填
project
然後submit 提交,project建立成功。

2.新增資料來源

點選DataSource選項卡->Load Hive Table
ds


填寫hive表名,前面加上庫名
ds
然後點選sync,匯入資料來源成功,可以看到如下資訊:
ds

3.建立model

model

新增model name然後 next
model
選擇剛才新增到資料來源中的事實表,如果有Lookup Table也可新增,然後next
model
選擇需要的維度
model
選擇需要的指標
model
相關設定
model
partition date colume表示分割槽欄位,選擇hive表中按時間分割槽的欄位。然後從date format中選擇不同的時間格式。最下面的filter可以新增where條件對資料來源中的資料做過濾。
至此,model建立完成。

4.建立cube

下面進入關鍵環節建立cube。
類似於建立model,建立cube。選擇之前建立好的model,並填入cube name。notification email list是選填項,表示報警接收人郵件地址,多個郵件地址以逗號隔開。
cube
然後next。選擇dimession,有兩種方式:一是手動新增dimession,二是使用自動生成,我們這裡使用自動生成,然後勾選需要的欄位。
cube
cube
然後next,選擇指標
cube
count(1)是系統預設自帶的,不要刪除。
點選+號新增需要的指標,需要填入名稱,選擇表示式。這裡選擇的是sum。我們要針對disp加和求pv,在param value裡面選擇disp列。
需要注意的是kylin中hive表中每一列欄位的型別要求比較嚴格。dimession欄位需要為String,用來加和的指標欄位須為bigint或者decimal


添加了所有需要的指標後,點選next
cube
設定merge時間。Kylin每次build會生成一張hbase表,merge操作會把多天資料合併成一張新的hbase表。可加快查詢。
設定partition Start Date,即資料來源開始時間,預設為1970-01-01.點選Next.
cube
Mandatory Dimensions:每次查詢均會使用的維度可新增在此。比如某些情況下的partition column.
Hierarchy Dimensions:維度列中彼此間存在層級關係的列,比如“國家-省份-市-縣”
Joint Dimensions:每次查詢會同時使用或不使用的維度組合。
Aggregation Group:在不同的查詢中,兩組維度組合之間不會產生交叉,可選擇此選項,比如所有的cube維度有 [ a,b,c,d,e,f ] 6個,每次查詢中只會同時查與 [ a,b,c ] 相關的資訊(比如[a],[a,c]等)而不會查詢 [ d,e,f ],或者相反,則可選擇此選項。
以上選擇均可減少build過程中的資料量,是加快build與query速度的優化點之一。
接下來基本上就是next,然後儲存,如果沒有報錯,則證明cube建立成功,如下圖
cube

5.cube其他操作

最常用的就是build操作,它會根據我們建立的cube進行資料的預計算。
build
選擇構建的終止時間,然後提交,之後可以在monitor中看到cube構建的狀態。
build
其他操作說明:
Drop:丟棄現有cube,條件:無Pending, Running, Error 狀態的job.
Edit:編輯現有cube,條件:cube需處於disable狀態。
Refresh:重建某已有時間段資料,針對於已build時間段的源資料發生了改變的情況。
Merge:手動觸發merge操作。
Enable:使擁有至少一個有效segment的cube從disable變為enable狀態。
Purge:清空所有該cube的資料。
Clone:克隆一個新的cube,可設定新的名字,其他相關配置與原cube相同。
Disable:使一個處於ready狀態的cube變為Disable狀態,查詢不會從disable的cube中獲取資料。

6.查詢操作

資料預計算完成後就可以進行查詢了,查詢過程中也可以驗證cube建立的是否有問題。有兩種查詢方式:一種是通過kylin的web介面,一種是使用kylin提供的rest api。下面分別介紹。
(1)web查詢。進入insight,輸入sql語句,等待查詢結果,和一般的資料庫客戶端類似。
(2)rest api。舉例如下:
假如需要查詢的sql語句為:“select sum(disp) as pv from t_table group by td,bd”
kylin賬戶的賬號密碼為:“kylinid:passwd”,對其進行base64加密。secret=echo -n “kylin_id:password” | base64
使用的project為:my_kylin_project
介面地址為:http://localhost:7070/kylin/api/query
則請求為:

bash    2行

curl -X POST -H "Authorization:Basic ${secret}" -H "Content-Type:application/json" -d '{ "sql" : "select sum(disp) as pv from t_table group by td,bd", "project" : "my_kylin_project" }' http://localhost:7070/kylin/api/query

更多文章請關注微信公眾號:bigdataer