
“跟着维度数量标增长,Cuboid 的数量会爆炸式地增长。为了缓解 Cube 的构建压力,Apache Kylin 惹人了一系列的高等设置,赞助用户筛选出真正须要的 Cuboid。这些高等设置包含聚合组(Aggregation Group)、结合维度(Joint Dimension)、层级维度(Hierachy Dimension)和须要维度(Mandatory Dimension)等。”
众所周知,Apache Kylin 的重要工作就是为源数据构建 N 个维度的 Cube,实现聚合的估计算。理论上而言,构建 N 个维度的 Cube 会生成 2N 个 Cuboid, 如图 1 所示,构建一个 4 个维度(A,B,C, D)的 Cube,须要生成 16 个Cuboid。

图1
跟着维度数量标增长 Cuboid 的数量会爆炸式地增长,不仅占用大年夜量的存储空间还会延长 Cube 的构建时光。为了缓解 Cube 的构建压力,削减生成的 Cuboid 数量,Apache Kylin 惹人了一系列的高等设置,赞助用户筛选出真正须要的 Cuboid。这些高等设置包含聚合组(Aggregation Group)、结合维度(Joint Dimension)、层级维度(Hierachy Dimension)和须要维度(Mandatory Dimension)等,本系列精深刻讲解这些高等设置的含义及其实用的场景。
本文将侧重介绍聚合组的实现道理与应用处景实例。
聚合组(Aggregation Group)
小结
用户根据本身存眷的维度组合,可以划渤辗试己存眷的组合大年夜类,这些大年夜类在 Apache Kylin 琅绫擎被称为聚合组。例如图 1 中展示的 Cube,如不雅用户仅仅存眷维度 AB 组合和维度 CD 组合,那么该 Cube 则可以被分化成两个聚合组,分别是聚合组 AB 和聚合组 CD。如图 2 所示,生成的 Cuboid 数量大年夜 16 个缩减成了 8 个。

图2

图3
有了聚合组用户就可以粗粒度地对 Cuboid 进行筛选,获取本身想要的维度组合。
应用实例
假设创建一个交易数据的 Cube,它包含了以下一些维度:顾客 ID buyer_id 交易日期 cal_dt、付款的方法 pay_type 和买家地点的城市 city。有时刻,分析师须要经由过程分组聚合 city、cal_dt 和 pay_type 来获知不合花费方法在不合城市的应用情况;有时刻,分析师须要经由过程聚合 city 、cal_dt 和 buyer_id,来查看顾客在不合城市的花费行动。在上述的实例中,推荐建立两个聚合组,包含的维度和方法如图 4 :

聚合组 1: [cal_dt, city, pay_type]
聚合组 2: [cal_dt, city, buyer_id]
在不推敲其他干扰身分的情况下,如许的聚合组将节俭不须要的 3 个 Cuboid: [pay_type, buyer_id]、[city, pay_type, buyer_id] 和 [cal_dt, pay_type, buyer_id] 等,节俭了存储资本和构建的履行时光。
Case 1:
SELECT cal_dt, city, pay_type, count(*) FROM table GROUP BY cal_dt, city, pay_type 则将大年夜 Cuboid [cal_dt, city, pay_type] 中获取数据。
Case2:
SELECT cal_dt, city, buy_id, count(*) FROM table GROUP BY cal_dt, city, buyer_id 则将大年夜 Cuboid [cal_dt, city, pay_type] 中获取数据。
Case3 如不雅有一条不常用的萌芽:
SELECT pay_type, buyer_id, count(*) FROM table GROUP BY pay_type, buyer_id 则没有现成的完全匹配的 Cuboid。
此时,Apache Kylin 会经由过程在线计算的方法,大年夜现有的 Cuboid 上钩算出最终结不雅。
Apache Kylin 作为一种多维分析对象,其采取估计算的办法,应用空间换取时光,进步萌芽效力。本文介绍了 Apache Kylin 的高等设置中聚合组的部分,聚合组实用于当分析师粗粒度地存眷某些维度去进行分组聚合的场景。
用户关怀的聚合组之间可能包含雷同的维度,例如聚合组 ABC 和聚合组 BCD 都包含维度 B 和维度 C。这些聚合组之间会衍生出雷同的 Cuboid,例如聚合组 ABC 会产生 Cuboid BC,聚合组 BCD 也会产生 Cuboid BC。这些 Cuboid不会被反复生成,一份 Cuboid 为这些聚合组所共有,如图 3 所示。
【编辑推荐】
- HBase最佳实践-写机能优化策略
- Spark机能优化之道——解决Spark数据倾斜(Data Skew)的N种姿势
- Hive map阶段迟缓,优化过程具体分析
- Hive的萌芽留意事项以及优化总结
- Spark法度榜样运行常见缺点解决办法以及优化
推荐阅读
只要你对 JS 中同步和异步代码的差别、变量感化域、闭包等概念有精确的懂得,就知道精确谜底是 C,代码的实际输出是:写在前面,笔者在做面试官这 2 年多的时光内,面试了数百个前端工程师>>>详细阅读
本文标题:Apache Kylin优化–高级设置:聚合组(Aggregation Group)原理解析
地址:http://www.17bianji.com/lsqh/34711.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示