寫在前面: 博主是一名軟件工程系大數據應用開發專業大二的學生,暱稱來源於《愛麗絲夢遊仙境》中的Alice和自己的暱稱。作爲一名互聯網小白,
寫博客一方面是爲了記錄自己的學習歷程,一方面是希望能夠幫助到很多和自己一樣處於起步階段的萌新
。由於水平有限,博客中難免會有一些錯誤,有紕漏之處懇請各位大佬不吝賜教!個人小站:http://alices.ibilibili.xyz/ , 博客主頁:https://alice.blog.csdn.net/
儘管當前水平可能不及各位大佬,但我還是希望自己能夠做得更好,因爲一天的生活就是一生的縮影
。我希望在最美的年華,做最好的自己
!
上一篇博客已經爲各位朋友帶來了Kylin的簡介以及安裝部署(👉第一個"國產"Apache頂級項目——Kylin,瞭解一下!)。本篇博客,博主爲大家帶來的是關於Kylin的實際應用操作!
碼字不易,先贊後看,養成習慣
文章目錄
入門案例
測試數據表結構介紹
1、(事實表)dw_sales
列名 | 列類型 | 說明 |
---|---|---|
id | string | 訂單id |
date1 | string | 訂單日期 |
channelid | string | 訂單渠道(商場、京東、天貓) |
productid | string | 產品id |
regionid | string | 區域名稱 |
amount | int | 商品下單數量 |
price | double | 商品金額 |
2、(維度表_渠道方式)dim_channel
列名 | 列類型 | 說明 |
---|---|---|
channelid | string | 渠道id |
channelname | string | 渠道名稱 |
3、(維度表_產品名稱)dim_product
列名 | 列類型 | 說明 |
---|---|---|
productid | string | 產品id |
productname | string | 產品名稱 |
4、(維度表_區域)dim_region
列名 | 列類型 | 說明 |
---|---|---|
regionid | string | 區域id |
regionname | string | 區域名稱 |
導入測試數據
爲了方便後續學習Kylin的使用,需要準備一些測試表、測試數據。
1.Hive中創建表
2.將數據從本地文件導入到Hive
操作步驟
1、使用 beeline 連接Hive
!connect jdbc:hive2://node1:10000
2、創建並切換到 itcast_dw 數據庫
create database itcast_kylin_dw;
use itcast_kylin_dw;
3、找到資料中的hive.sql文件,執行sql、創建測試表
-- 查看錶是否創建成功
show tables;
4、在home目錄創建~/dat_file 文件夾,並將測試數據文件上傳到該文件夾中
mkdir ~/dat_file
導入數據到表中
-- 導入數據
LOAD DATA LOCAL INPATH '/root/dat_file/dw_sales_data.txt' OVERWRITE INTO TABLE dw_sales;
LOAD DATA LOCAL INPATH '/root/dat_file/dim_channel_data.txt' OVERWRITE INTO TABLE dim_channel;
LOAD DATA LOCAL INPATH '/root/dat_file/dim_product_data.txt' OVERWRITE INTO TABLE dim_product;
LOAD DATA LOCAL INPATH '/root/dat_file/dim_region_data.txt' OVERWRITE INTO TABLE dim_region;
5、執行一條SQL語句,確認數據是否已經成功導入
指標和維度
在完成了上面的數據準備操作後,我們就開始進行kylin的實際操作了。但我們還需要先了解什麼是指標和維度?
先來看下面這個問題
相信各位朋友已經有了自己的答案,這裏提供一種思路:
紅色字體是指標/度量?還是維度?
答案:指標/度量【到底要看什麼?獲取什麼?】
藍色字體是指標/度量?還是維度?
答案:維度【怎麼看!怎麼獲取!】
結論:需求決定哪些是維度,哪些是指標。
好了,明確了什麼是維度,什麼是指標之後,我們就可以開啓kylin的使用之旅了~
按照日期統計訂單總額/總數量(Kylin方式)
要使用Kylin進行OLAP分析,需要按照以下方式來進行。
1、創建項目(Project)
2、創建數據源(DataSource)
- 指定有哪些數據需要進行數據分析
3、創建模型(Model)
- 指定具體要對哪個事實表、那些維度進行數據分析
4、創建立方體(Cube)
- 指定對哪個數據模型執行數據預處理,生成不同維度的數據
5、執行構建、等待構建完成
6、再執行SQL查詢,獲取結果
- 從Cube中查詢數據
具體步驟:
1、創建項目(Project)
2、創建數據源(DataSource)
3、創建模型(Model)
設置model名稱
直接下一步
save保存完畢,就可以看見一個已經創建好了的Model
4、創建立方體(Cube)
保存完畢,我們可以看見一個新的Cube已經創建好了~
5、執行構建、等待構建完成
此時進度條還是灰色的,稍等片刻,等到加載完畢~
待加載完畢,我們可以發現此時的cube狀態已經變成READY
了。
6、再執行SQL查詢,獲取結果
從Cube中查詢數據
我們可以發現用Kylin執行HQL語句的速度最早爲3.88
s,第二次執行就變成了0.01
s
那如果在Hive的命令行窗口執行相同的HQL語句,耗時將爲多少呢?
可以看到Hive將HQL轉化成MapReduce程序去執行後,查詢的時間爲12.764
s,這個速度與上面用Kylin執行的速度相比,差了近100倍。如果數據量更大一些,Kylin的優勢將會更加明顯。
下面我們來總結一下上面這個入門案例:
如果有認真執行上面演示的案例
我相信推導出下面的關係應該不難
因爲我們在設置Model的時候,會選擇事實表中所有有可能用到的維度,而在設置Cube的時候,就需要根據實際的SQL需求,選擇確定使用到的維度。
在創建一個Cube的時候,第一步就需要選擇依賴於一個Model,所以Model和Cube的對應關係應該是一對多,且Model包含Cube的關係。
另外,在Cube內的元素,也是可以重複的,不同的Cube就相當於一個Model的子集。
關於前面的步驟中,設置維度—維度就是sql中GroupBY後面的字段.
設置指標/度量—指標/度量就是sql中select 後面的字段.
整個配置過程都來源於SQL,來源於需求。
運用所學這裏再回顧一下剛介紹Kylin時所介紹的架構圖
可以看出,整個流程分爲創建項目—引入數據—創建模型—創建cube –編譯 – 查詢
另外,我們在最後查看最終計算完畢的結果數據時,可以發現一些額外的信息。
Kylin將查詢後的結果寫入到了HBase的表中
我們根據顯示的信息,去HBase中查詢
可以發現雖然內容被加密了,但是能證明有數據
說明初次體驗Kylin體驗還是不錯的~
總結
本篇博客用一個入門案例爲大家演示了Kylin的基本操作,關於Kylin的進階操作會在後續的博文中爲大家揭曉,敬請期待!
如果以上過程中出現了任何的紕漏錯誤,煩請大佬們指正😅
受益的朋友或對大數據技術感興趣的夥伴記得點贊關注支持一波🙏