溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Apache Kylin優(yōu)化中如何進(jìn)行聚合組原理解析

發(fā)布時間:2022-01-17 11:06:43 來源:億速云 閱讀:135 作者:柒染 欄目:大數(shù)據(jù)

這篇文章跟大家分析一下“Apache Kylin優(yōu)化中如何進(jìn)行聚合組原理解析”。內(nèi)容詳細(xì)易懂,對“Apache Kylin優(yōu)化中如何進(jìn)行聚合組原理解析”感興趣的朋友可以跟著小編的思路慢慢深入來閱讀一下,希望閱讀后能夠?qū)Υ蠹矣兴鶐椭?。下面跟著小編一起深入學(xué)習(xí)“Apache Kylin優(yōu)化中如何進(jìn)行聚合組原理解析”的知識吧。

“隨著維度數(shù)目的增加,Cuboid 的數(shù)量會爆炸式地增長。為了緩解 Cube 的構(gòu)建壓力,Apache Kylin  引入了一系列的高級設(shè)置,幫助用戶篩選出真正需要的 Cuboid。這些高級設(shè)置包括聚合組(Aggregation Group)、聯(lián)合維度(Joint  Dimension)、層級維度(Hierachy Dimension)和必要維度(Mandatory Dimension)等?!?/p>

眾所周知,Apache Kylin 的主要工作就是為源數(shù)據(jù)構(gòu)建 N 個維度的 Cube,實現(xiàn)聚合的預(yù)計算。理論上而言,構(gòu)建 N 個維度的 Cube 會生成  2N 個 Cuboid, 如圖 1 所示,構(gòu)建一個 4 個維度(A,B,C, D)的 Cube,需要生成 16 個Cuboid。

Apache Kylin優(yōu)化中如何進(jìn)行聚合組原理解析

圖1

隨著維度數(shù)目的增加 Cuboid 的數(shù)量會爆炸式地增長,不僅占用大量的存儲空間還會延長 Cube 的構(gòu)建時間。為了緩解 Cube 的構(gòu)建壓力,減少生成的  Cuboid 數(shù)目,Apache Kylin 引入了一系列的高級設(shè)置,幫助用戶篩選出真正需要的 Cuboid。這些高級設(shè)置包括聚合組(Aggregation  Group)、聯(lián)合維度(Joint Dimension)、層級維度(Hierachy Dimension)和必要維度(Mandatory  Dimension)等,本系列將深入講解這些高級設(shè)置的含義及其適用的場景。

本文將著重介紹聚合組的實現(xiàn)原理與應(yīng)用場景實例。

聚合組(Aggregation Group)

用戶根據(jù)自己關(guān)注的維度組合,可以劃分出自己關(guān)注的組合大類,這些大類在 Apache Kylin 里面被稱為聚合組。例如圖 1 中展示的  Cube,如果用戶僅僅關(guān)注維度 AB 組合和維度 CD 組合,那么該 Cube 則可以被分化成兩個聚合組,分別是聚合組 AB 和聚合組 CD。如圖 2  所示,生成的 Cuboid 數(shù)目從 16 個縮減成了 8 個。

Apache Kylin優(yōu)化中如何進(jìn)行聚合組原理解析

圖2

用戶關(guān)心的聚合組之間可能包含相同的維度,例如聚合組 ABC 和聚合組 BCD 都包含維度 B 和維度 C。這些聚合組之間會衍生出相同的  Cuboid,例如聚合組 ABC 會產(chǎn)生 Cuboid BC,聚合組 BCD 也會產(chǎn)生 Cuboid BC。這些 Cuboid不會被重復(fù)生成,一份 Cuboid  為這些聚合組所共有,如圖 3 所示。

Apache Kylin優(yōu)化中如何進(jìn)行聚合組原理解析

圖3

有了聚合組用戶就可以粗粒度地對 Cuboid 進(jìn)行篩選,獲取自己想要的維度組合。

應(yīng)用實例

假設(shè)創(chuàng)建一個交易數(shù)據(jù)的 Cube,它包含了以下一些維度:顧客 ID buyer_id 交易日期 cal_dt、付款的方式 pay_type  和買家所在的城市 city。有時候,分析師需要通過分組聚合 city、cal_dt 和 pay_type  來獲知不同消費(fèi)方式在不同城市的應(yīng)用情況;有時候,分析師需要通過聚合 city 、cal_dt 和  buyer_id,來查看顧客在不同城市的消費(fèi)行為。在上述的實例中,推薦建立兩個聚合組,包含的維度和方式如圖 4 :

Apache Kylin優(yōu)化中如何進(jìn)行聚合組原理解析

聚合組 1: [cal_dt, city, pay_type]

聚合組 2: [cal_dt, city, buyer_id]

在不考慮其他干擾因素的情況下,這樣的聚合組將節(jié)省不必要的 3 個 Cuboid: [pay_type, buyer_id]、[city,  pay_type, buyer_id] 和 [cal_dt, pay_type, buyer_id] 等,節(jié)省了存儲資源和構(gòu)建的執(zhí)行時間。

Case 1:

SELECT cal_dt, city, pay_type, count(*) FROM table GROUP BY cal_dt, city,  pay_type 則將從 Cuboid [cal_dt, city, pay_type] 中獲取數(shù)據(jù)。

Case2:

SELECT cal_dt, city, buy_id, count(*) FROM table GROUP BY cal_dt, city,  buyer_id 則將從 Cuboid [cal_dt, city, pay_type] 中獲取數(shù)據(jù)。

Case3 如果有一條不常用的查詢:

SELECT pay_type, buyer_id, count(*) FROM table GROUP BY pay_type, buyer_id  則沒有現(xiàn)成的完全匹配的 Cuboid。

此時,Apache Kylin 會通過在線計算的方式,從現(xiàn)有的 Cuboid 中計算出最終結(jié)果。

Apache Kylin 作為一種多維分析工具,其采用預(yù)計算的方法,利用空間換取時間,提高查詢效率。

關(guān)于Apache Kylin優(yōu)化中如何進(jìn)行聚合組原理解析就分享到這里啦,希望上述內(nèi)容能夠讓大家有所提升。如果想要學(xué)習(xí)更多知識,請大家多多留意小編的更新。謝謝大家關(guān)注一下億速云網(wǎng)站!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI