Kylin基础优化

目录

一 Kylin的使用场景

二 Kylin的使用指南

三 Kylin的维度优化

2 设置强制维度

3 设置层级维度

4 设置联合维度

5 设置Extended Column

四 其余方面优化


一 Kylin的使用场景

Kylin的主要应用场景在于多维分析。在进行多维CUBE构建的时候维度是影响其性能的主要因素,需要注意的是目前Kylin虽然对维度数量不做限制,但是对生成的cuboid数有相应的限制,最大不会超过1024个,所以建议维度不要超过30个,维度基数不要太大,个人建议千万级内。

二 Kylin的使用指南

Kylin的相关使用指南可以直接查看Kylin的官档

三 Kylin的维度优化

其实维度的优化目的是消除多余的无用的维度组合,从而达到计算快,查询快的目的。目前Kylin的维度优化主要有以下几种方式

1 设置强制维度

强制维度是指每次查询必带的维度,比如时间分区。这种情况下可以把时间设置为强制维度

2 设置层级维度

层级维度一般应用在具有层级关系的情况下,比如省市区,这种情况下设置为层级维度,会减少不必要的计算

3 设置联合维度

联合维度一般是应用在同级关系代表一个维度的情况下,例如省ID,省名称

4 设置扩展列(Extended Column)

Extended Column和联合维度类似,但是如果设置为Extended Column,Extended Column不能作为查询条件,其优点就是在联合维度和层级维度都涉及两个维度的情况下,可以避免只能设置一种的情况(同一个维度只能出现在强制,联合,层级维度组里其中之一)。

5 设置聚集组

先来讲一下聚集组的应用场景,就是两个维度不会一起查询,比如一个model一共有A,B,C,D,E五种维度,但是D和E是不会在一起查询的,这个时候是可以设置两个聚集组,即,ABCD为一个聚集组;ABCE为一个聚集组。目前个人测试,聚集组不要超过6个。

四 其余方面优化

  • HBase Rowkey顺序

    • 强制维度在最前。

    • 查询频率越高的维度越靠前。

    • 维度基数越搞的维度越靠前。

如果有的列维度基数多大可以将在字典里设置为shared by=true,可以加速Extract Fact Table Distinct Columns这一步的reducer过程,如果此列是string类型可以设置字典编码为"fixed_length"。不然计算字典的时间会非常长

如果Convert cuboid data to Hfile步骤有OOM的情况可以设置如下参数用来增加reduce的内存:

"kylin.engine.mr.hfile-config-override.mapred.reduce.child.java.opts": "-Xmx3g",

"kylin.engine.mr.hfile-config-override.mapreduce.reduce.memory.mb": "3500"

猜你喜欢

转载自blog.csdn.net/Gospelanswer/article/details/88928917