Apache Kylin 优化指南
一. 维度优化
为什么需要维度优化
如果不进行任何维度优化,直接将所有的维度放在一个聚集组里,Kylin将会计算所有的维度组合(cuboid)。比如,有12个维度,Kylin 就计算2的12次方即4096个cuboid,实际查询可能用不到cuboid 不到1000个,甚至更少。如果进行围堵优化,会造成集群计算和存储资源的浪费,也会影响cube的build和查询性能。
当你保存的cube时遇到下面的异常信息时,意味着一个聚合组已经大于4096,你就必须进行维度优化了。
如何计算1个聚合组的维度组合数
当有层次维度时,公式如下:
(hierarchy.size()+1) * hierarchyDimsList.size() * (1 << jointDimsList.size()) * (1 << normalDims.size())
当没有层次维度时,公式如下:
(1 << jointDimsList.size()) * (1 << normalDims.size())
如何进行维度优化
确认你设置的cube维