美文网首页
Kylin Cube优化

Kylin Cube优化

作者: 风筝flying | 来源:发表于2019-12-18 16:19 被阅读0次

维度优化

层级维度

根据kylin的理念,当你在创建cube时选择了N个维度,那么最终的会有2的N次方个维度组合,但在某些情况下,我们可以精简一些不必要的维度组合。例如,如果我们有大洲,国家和城市维度(在层级维度中,范围更大的维度值一般排在第一位)。当我们需要建立cube对数据进行分析时,我们仅需要如下的三种维度组合:

  • 大洲
  • 大洲和国家
  • 大洲,国家和城市
    这样我们将维度组合从8个降到了3个,并且不会影响到最初的需求实现。

如果我们假定H1,H2,H3作为层级维度,那么层级维度有如下的典型使用场景:

  1. 层级维度出现在查询表中
Fact Table Joins Lookup Table
column1,column2,...FK PK,H1,H2,H3...
  1. 层级维度出现在事实表中
Fact table
column1,column2,..H1,H2,H3...

对于场景1存在一种特殊情况,就是主键字段是层级维度的一部分。

派生维度

派生维度只能出现在查询表中,这些维度可以通过其他一个或多个维度(这些维度一般对应的是外键)推导得出。
例如,我们通过条件“where DimA=DimX”来实现一张事实表去连接一个查询表。需要注意的是,在Kylin中,如果选择了FK作为维度,那么相应的PK将会被自动查询,而不需任何额外的开销。这是因为FK和PK始终保持一致。这意味着如果我们需要在Cube中使用维度组合DimA(FK),DimX(PK),DimB,DimC,那么我们可以直接使用DimA,DimB,DimC。

Fact Table Joins Lookup Table
column1,column2,...DimA(FK) DimX(PK),DimB,DimC

我们假设DimA与DimB有如下的映射关系:

dimA dimB dimC
1 a ?
2 b ?
3 c ?
4 a ?

在这种情况下,如果DimA的值以及确定,那么DimB的值也是确定的,DimB就被称为DimA的派生维度。当我们需要构建一个同时包含DimA和DimB的Cube时,我们仅需要包含DimA,而把DimB设置成派生维度,而派生维度不会参与cuboids的产生。

  • 如果不设置派生列,需要的维度组合
    ABC,AB,AC,BC,A,B,C
  • 设置B是A的派生维度后,需要的维度组合
    AC,A,C

参数优化

  1. 处理超高基列(Ultra-High-Cardinality Columns)
  • kylin.engine.mr.build-uhc-dict-in-additional-step:默认值是FALSE,改成TRUE
  • kylin.engine.mr.uhc-reducer-count:默认值是1,可以调高到5,这样每个超高基列会有5个reducer来处理。
    Kylin高级设置-英文
    Kylin高级设置-中文

相关文章

网友评论

      本文标题:Kylin Cube优化

      本文链接:https://www.haomeiwen.com/subject/issunctx.html