程序员节献礼|10本权威指南已就位,书的主人们在哪里?

电脑前不动声色,技术深不可测,创新不遗余力。。。1024是他们的节日,他们就是可爱的程序员。关注科技前沿, 不断迭代知识,学习是程序员生活的主旋律。今天是所有程序员人的节日,我们特别准备了 10 本  Apache Kylin  学习秘籍—— 《Apache Kylin 权威指南(第2版)》献给大数据技术人 ,答对 3 道题目即有机会赢取。快快抓紧时间答题,赢取 K ylin  学习秘籍 吧~

答题游戏规则

1. 认真阅读下面的题目与 3 个问题,得出您的答案。

2. 关注本公众号(apachekylin),在「公众号后台」回复您的答案。

3. 前 10 名在「本公众号后台」回复所有 3 道题的正确答案的小伙伴将获赠《Apache Kylin 权威指南(第2版)》,我们将于下周一(10.28)在本公众号公布中奖名单。

背景信息

写在前面:知道什么是联合维度、层级维度和必要维度的同学可以跳过「背景信息」直接答题。

众所周知,Apache Kylin 的主要工作就是为源数据构建 N 个维度的 Cube,实现聚合的预计算。理论上而言,构建 N 个维度的 Cube 会生成 2^N 个 Cuboid, 如下图所示,构建一个 4 个维度(A,B,C,D)的 Cube,需要生成 16 个Cuboid。

纬度爆炸问题

随着维度数目的增加 Cuboid 的数量会爆炸式地增长,不仅占用大量的存储空间还会延长 Cube 的构建时间。为了缓解 Cube 的构建压力,减少生成的 Cuboid 数目,Apache Kylin 引入了一系列的高级设置,帮助用户筛选出真正需要的 Cuboid。这些高级设置包括聚合组(Aggregation Group)、联合维度(Joint Dimension)、层级维度(Hierachy Dimension)和必要维度(Mandatory Dimension)。

聚合组

用户根据自己关注的维度组合,可以划分出自己关注的组合大类,这些大类在 Apache Kylin 里面被称为聚合组。在一个聚合组内部,用户需要根据查询的一般模式,设置联合维度、层级维度和必要维度。

联合维度

1)场景

用户有时并不关心维度之间各种细节的组合方式,例如用户的查询语句中仅仅会出现 group by A, B, C,而不会出现 group by A, B 或者 group by C 等等这些细化的维度组合。

2)使用

通过联合维度,我们可以将几个维度视为一个维度。例如将维度 A、B 和 C 定义为联合维度,Apache Kylin 就仅仅会构建 Cuboid ABC,而 Cuboid AB、BC、A 等等 Cuboid 都不会被生成,从而达到了减少 cuboid 的目的。

3)效果

将 N 个维度中 x 个维度设置为关联维度,则这 N 个维度组合成的 cuboid 个数会从 2^N 次方减少到 2^(N-X+1) 。如下图,Cuboid 数目从 16 减少到 4 [2^(4-3+1)=4]。

Cube 1 将 platform, device_type, os_version定义为维度,count(distinct pageview_id)定义为度量。问:

1. 对于Cube1,不经过任何剪枝,会有多少个cuboid?

2. 对于Cube1,在聚合组内将device_type, os_version设置为联合维度后,cuboid数量减少为原来的多少(比例)?

3. 对于Cube1,用户的SQL查询对platform, device_type这两列进行group by,需要 Kylin 进行现场聚合吗?

知道答案的 Kyliner 快点在本公众号后台回复这 3 道题的答案吧。 拼得就是手速~大家节日快乐!

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章