Kylin Cube构建优化

在优化过程中,我们应该在两个方面去考虑,cube构建+查询速率,接下来我也是通过两方面去概述。

1.使用衍生维度(derived dimension):

衍生维度用于在有效维度内将维度表上的非主键维度排除掉,并使用维度表的主键(其实是事实表上相应的外键)来替代它们。Kylin会在底层记录维度表主键与维度表其他维度之间的映射关系,以便在查询时能够动态地将维度表的主键“翻译”成这些非主键维度,并进行实时聚合。

在这里插入图片描述

将维度表上的非主键排除,在使用时用维度表主键来代替(其实是事实表上相应外键),不过kylin会在底层记录维度表逐渐与外键之间的关系。而在查询时,动态的将维度表主键翻译成非主键维度,并进行聚合。

2 使用聚合组(Aggregation group):

1)强制维度(Mandatory)
在这里插入图片描述

2)层级维度(Hierarchy):例如年月日、省市区。
在这里插入图片描述

只要有B前面一定有A

3)联合维度(Joint):两个必须同时出现才有意义
在这里插入图片描述

设置界面:
在这里插入图片描述

3、 Row Key优化

Row key的设计原则如下:

结论:基数大的放前面(构建),被用作过滤条件的放前面(查询)

1)被用作过滤的维度放在前边。(优化查询)

在这里插入图片描述

2)基数大的维度放在基数小的维度前边。(优化构建)

基数:就是count(distinct)或group by之后count的大小,比如月和日,月的基数是12,日的基数是30

在这里插入图片描述

在维度聚合的时候,kylin默认会选择cuboid小的(1101小于1110)进行聚合,所以我们要把基数大的维度向前调。主要是基数越小,聚合程度越高

4 并发粒度优化:

一个cube每日都要构建一次,形成一张表放入hbase中,然后7天一小合并,28天一大合并。

参数设置:

在这里插入图片描述

两种方式,一种到达5G分裂成两部分,一种直接分配固定大小的region,通过max和min设置,这样可以提高查询效率。
在这里插入图片描述

由于每个Cube的并发粒度控制不尽相同,因此建议在Cube Designer 的Configuration Overwrites(上图所示)中为每个Cube量身定制控制并发粒度的参数。假设将把当前Cube的kylin.hbase.region.count.min设置为2,kylin.hbase.region.count.max设置为100。这样无论Segment的大小如何变化,它的分区数量最小都不会低于2,最大都不会超过100。相应地,这个Segment背后的存储引擎(HBase)为了存储这个Segment,也不会使用小于两个或超过100个的分区。我们还调整了默认的kylin.hbase.region.cut,这样50GB的Segment基本上会被分配到50个分区,相比默认设置,我们的Cuboid可能最多会获得5倍的并发量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值