本篇內容主要講解“如何使用Apache Kylin框架”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用Apache Kylin框架”吧!
Apache Kylin 是什么?
Apache Kylin?是一個開源的分布式分析引擎,提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規模數據,最初由eBay Inc. 開發并貢獻至開源社區。它能在亞秒內查詢巨大的Hive表。
Apache Kylin框架介紹
Apache kylin 能提供低延遲(sub-second latency)的秘訣就是預計算,即針對一個星型拓撲結構的數據立方體,預計算多個維度組合的度量,然后將結果保存在hbase中,對外暴露JDBC、ODBC、Rest API的查詢接口,即可實現實時查詢。Kylin從Hadoop Hive中獲取數據,然后經過Cube Build Engine,將Hive中的數據Build成一個OLAP Cube保存在HBase中。用戶執行SQL查詢時,通過Query引擎,將SQL語句解析成OLAP Cube查詢,然后將結果返回給用戶。
Apache Kylin核心概念
表(table):This is definition of hive tables as source of cubes,在build cube 之前,必須同步在 kylin中。
模型(model):模型描述了一個星型模式的數據結構,它定義了一個事實表(Fact Table)和多個查找表(Lookup Table)的連接和過濾關系。
Cube 描述:描述一個Cube實例的定義和配置選項,包括使用了哪個數據模型、包含哪些維度和度量、如何將數據進行分區、如何處理自動合并等等。
Cube實例:通過Cube描述Build得到,包含一個或者多個Cube Segment。
分區(Partition):用戶可以在Cube描述中使用一個DATA/STRING的列作為分區的列,從而將一個Cube按照日期分割成多個segment。
立方體段(cube segment):它是立方體構建(build)后的數據載體,一個 segment 映射hbase中的一張表,立方體實例構建(build)后,會產生一個新的segment,一旦某個已經構建的立方體的原始數據發生變化,只需刷新(fresh)變化的時間段所關聯的segment即可。
聚合組:每一個聚合組是一個維度的子集,在內部通過組合構建cuboid。
作業(job):對立方體實例發出構建(build)請求后,會產生一個作業。該作業記錄了立方體實例build時的每一步任務信息。作業的狀態信息反映構建立方體實例的結果信息。如作業執行的狀態信息為RUNNING 時,表明立方體實例正在被構建;若作業狀態信息為FINISHED ,表明立方體實例構建成功;若作業狀態信息為ERROR ,表明立方體實例構建失??!
樣例 Cube 快速入門
執行$KYLIN_HOME/bin/sample.sh,等待腳本執行完畢,導入學習工程,Kylin 提供了一個創建樣例 Cube 腳本;腳本會創建五個樣例 Hive 表,該表主要是記錄銷售信息數據。我們將基于該表進行銷售相關信息進行分析。
導入學習工程后需要重新加載元素據或者是重啟kylin服務才能使工程生效。這里我們采用重新加載的方式來進行處理。
訪問主機: http://hostname:7070,用默認的用戶名和密碼 ADMIN/KYLIN 登陸 Kylin 網站
選擇 project 下拉框(左上角)中的 learn_kylin 工程;可以看到該項目下存在剛剛導入的Hive庫。
連接一下Hive庫,查看Hive default庫中的表,存在上面的五張表
進入kylin Web界面登錄 》System 》reload metadata,重新加載元素據。
執行完成后可以查看導入模型,存在兩個模型,本次我們主要是學習“kylin_sales_cube”
選擇該數據模型,點擊“Build”構建cube。
選擇數據分區范圍,選擇一個在 2014-01-01 之后的日期(覆蓋所有的 10000 樣例記錄)。
點擊monitor,查看正在構建cube的作業,刷新查看構建進度,等待構建完成
這一步會比較耗時,因為這步會進行預計算,默認是MapReduce作業。
如果長時間沒有完成,請再次點擊刷新,狀態信息會更新,期間遇到錯誤如下所示:
經查看是由于hadoop的歷史任務服務器沒有啟動導致,執行命令開啟
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
jps檢測是否有JobHistoryServer進程,存在進程則證明啟動成功
啟動后可以,點擊“ACTION”下面有個“PENDING”選項可以恢復再次運行的狀態。
構建完成
查詢構建完成的cube,在“Insight”選項卡中執行SQL,首先我們執行一條SQL用來統計“KYLIN_SALES”表的數目。
select count(*) from KYLIN_SALES
執行結果耗時1.77秒
再次執行耗時就非??炝?,第四次執行耗時0.11秒
接下來我們執行一條業務分析的SQL,用來統計每日銷售總金額和購買人數量。執行結果,結果展示較快
select part_dt, sum(price) as total_sold, count(distinct seller_id) as sellers
from kylin_sales group by part_dt order by part_dt
基于上面的SQL再次進行擴展,進行多表關聯,對銷售數據進行多維分析,查看不同分類下商品的銷售情況。查看多表關聯查詢結果,速度依然很快。
SELECT sum(KYLIN_SALES.PRICE) AS price_sum,
KYLIN_CATEGORY_GROUPINGS.META_CATEG_NAME,
KYLIN_CATEGORY_GROUPINGS.CATEG_LVL2_NAME
FROM KYLIN_SALES
INNER JOIN KYLIN_CATEGORY_GROUPINGS ON KYLIN_SALES.LEAF_CATEG_ID = KYLIN_CATEGORY_GROUPINGS.LEAF_CATEG_ID
AND KYLIN_SALES.LSTG_SITE_ID = KYLIN_CATEGORY_GROUPINGS.SITE_ID
GROUP BY KYLIN_CATEGORY_GROUPINGS.META_CATEG_NAME,
KYLIN_CATEGORY_GROUPINGS.CATEG_LVL2_NAME
ORDER BY KYLIN_CATEGORY_GROUPINGS.META_CATEG_NAME ASC,
KYLIN_CATEGORY_GROUPINGS.CATEG_LVL2_NAME DESC
點擊Visualization 可視化展示,用戶可以選擇“圖形類型”,“維度”和“度量”。
到此,相信大家對“如何使用Apache Kylin框架”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。