kylin從入門到實戰:實際案例
版權申明:轉載請注明出處。
文章來源:http://bigdataer.net/?p=308
排版亂?請移步原文獲得更好的閱讀體驗
前面兩篇文章已經介紹了kylin的相關概念以及cube的一些原理,這篇文章將從一個實際的案例入手,介紹如何在kylin平台上創建一個多維分析項目。
1.創建project
進入kylin操作界面,如果沒有project可以創建,kylin里面可以創建多個project,有效的把各種業務數據分析隔離開來。如圖:
如下,填寫project name,description可以不填
然后submit 提交,project創建成功。
2.添加數據源
點擊DataSource選項卡->Load Hive Table
填寫hive表名,前面加上庫名
然后點擊sync,導入數據源成功,可以看到如下信息:
3.創建model
添加model name然后 next
選擇剛才添加到數據源中的事實表,如果有Lookup Table也可添加,然后next
選擇需要的維度
選擇需要的指標
相關設置
partition date colume表示分區字段,選擇hive表中按時間分區的字段。然后從date format中選擇不同的時間格式。最下面的filter可以添加where條件對數據源中的數據做過濾。
至此,model創建完成。
4.創建cube
下面進入關鍵環節創建cube。
類似於創建model,創建cube。選擇之前創建好的model,並填入cube name。notification email list是選填項,表示報警接收人郵件地址,多個郵件地址以逗號隔開。
然后next。選擇dimession,有兩種方式:一是手動添加dimession,二是使用自動生成,我們這里使用自動生成,然后勾選需要的字段。
然后next,選擇指標
count(1)是系統默認自帶的,不要刪除。
點擊+號添加需要的指標,需要填入名稱,選擇表達式。這里選擇的是sum。我們要針對disp加和求pv,在param value里面選擇disp列。
需要注意的是kylin中hive表中每一列字段的類型要求比較嚴格。dimession字段需要為String,用來加和的指標字段須為bigint或者decimal
添加了所有需要的指標后,點擊next
設置merge時間。Kylin每次build會生成一張hbase表,merge操作會把多天數據合並成一張新的hbase表。可加快查詢。
設置partition Start Date,即數據源開始時間,默認為1970-01-01.點擊Next.
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創建成功,如下圖
5.cube其他操作
最常用的就是build操作,它會根據我們創建的cube進行數據的預計算。
選擇構建的終止時間,然后提交,之后可以在monitor中看到cube構建的狀態。
其他操作說明:
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