Apache Kylin快速入門並結合zeppelin做視覺化展示
Kylin簡介
Apache Kylin™是一個開源的、分散式的分析型資料倉庫,提供Hadoop/Spark 之上的 SQL 查詢介面及多維分析(OLAP)能力以支援超大規模資料,最初由 eBay 開發並貢獻至開源社群。它能在亞秒內查詢巨大的表。
Apache Kylin™ 令使用者僅需三步,即可實現超大資料集上的亞秒級查詢。
- 定義資料集上的一個星形或雪花形模型
- 在定義的資料表上構建cube
- 使用標準 SQL 通過 ODBC、JDBC 或 RESTFUL API 進行查詢,僅需亞秒級響應時間即可獲得查詢結果
Kylin 提供與多種資料視覺化工具的整合能力,如 Tableau,PowerBI 等,令使用者可以使用 BI 工具對 Hadoop 資料進行分析。
樣例 Cube 快速入門樣例 Cube 快速入門
Kylin 提供了一個建立樣例 Cube 指令碼;指令碼會建立五個樣例 hive 表:
- 執行 ${KYLIN_HOME}/bin/sample.sh ;重啟 kylin 伺服器重新整理快取;
- 用預設的使用者名稱和密碼 ADMIN/KYLIN 登陸 Kylin 網站,選擇 project 下拉框(左上角)中的 “learn_kylin” 工程;
- 選擇名為 “kylin_sales_cube” 的樣例 cube,點選 “Actions” -> “Build”,選擇一個在 2014-01-01 之後的日期(覆蓋所有的 10000 樣例記錄);
-
點選 “Monitor” 標籤,檢視 build 進度直至 100%;
-
點選 “Insight” 標籤,執行 SQLs,例如:
select part_dt, sum(price) as total_selled, count(distinct seller_id) as sellers from kylin_sales group by part_dt order by part_dt
Streaming 樣例 Cube 快速入門
Kylin 也提供了 streaming 樣例 cube 指令碼。該指令碼將會建立 Kafka topic 且不斷的向生成的 topic 傳送隨機 messages。
- 首先設定 KAFKA_HOME,然後啟動 Kylin。
-
執行 ${KYLIN_HOME}/bin/sample.sh,它會在 learn_kylin 工程中生成 DEFAULT.KYLIN_STREAMING_TABLE 表,kylin_streaming_model 模型,Cube kylin_streaming_cube。
-
執行 ${KYLIN_HOME}/bin/sample-streaming.sh,它會在 localhost:9092 broker 中建立名為 kylin_streaming_topic 的 Kafka Topic。它也會每秒隨機發送 100 條 messages 到 kylin_streaming_topic。+
-
遵循標準 cube build 過程,並觸發 Cube kylin_streaming_cube build。
-
點選 “Monitor” 標籤,檢視 build 進度直至至少有一個 job 達到 100%。
-
點選 “Insight” 標籤,執行 SQLs,例如:
點選檢視程式碼
select count(*), HOUR_START from kylin_streaming_table group by HOUR_START
- 驗證查詢結果。
Kylin簡單例子演示
官方的案例雖然只有幾張表,但是對於初學者來說還是有點複雜,接下來我將演示一個簡單易懂的例子
首先我們需要建立兩張表,並將一些資料載入進去(兩張表已經建立完成,可以直接載入)
點選data source 再點選load table按鈕
新增emp、dept兩張表
我們來看一下這兩張表的欄位吧
需求:求出各個部門的薪資總和
1. 首先新建一個model
2. 填寫Model名稱及描述後Next
3. 選擇事實表
4. 新增維度表
5. 選擇inner join
6. 選擇需要的查詢的欄位
7. 選擇需要統計的欄位
8. 最後一步分割槽這塊不需要修改
9. 構建cube
10. 選擇Model及填寫Cube Name
11. 新增維度
12. 新增需要預計算的內容
13. 接下來的配置全部選擇next,最後點選save
14. Cube配置完成,開始build
15. 檢視build進度(第一次build可能會有點慢)
Build中的操作簡單概括:建立hive臨時表,用於將事實表資料暫時儲存,然後根據model進行join操作,維度的多少影響cube build完成的時間,最後的資料都將在hive的臨時表上,將這張表匯出成Hfile(寫入HBASE的檔案型別),將Hfile匯入HBASE,HBASE按照檔案載入預計算結果,清理hive中的臨時表,最後將結果落盤到hdfs。
16. 現在去完成我們的需求
輸入sql:select dname,sum(sal) from emp e join dept d on e.deptno = d.deptno group by dname;
就可以得出各個部門的薪資總和了
Zeppelin結合kylin演示
1. 進入zeppelin頁面
2. 配置Zeppelin支援Kylin
搜尋kylin外掛
修改完成點選Save完成(這裡按照實際情況填寫)
3. 案例實操
需求:查詢員工的詳細資訊,並可視化展示