一种基于Kylin逐层算法的Cube存储优化方法与流程

文档序号:37689727发布日期:2024-04-18 21:06阅读:8来源:国知局
一种基于Kylin逐层算法的Cube存储优化方法与流程

本发明涉及云计算与大数据,尤其涉及一种基于kylin逐层算法的cube存储优化方法。


背景技术:

1、kylin是一种开源的olap引擎,工作原理是事先对数据模型做cube预计算并将结果保存起来,利用预计算的结果来加速多维查询。cube是数据立方体,是由多个维度数据构建出来的多维空间,包含了所有要分析的基础数据,所有的聚合数据操作都在立方体上进行。一个cube包含多个cuboid,cuboid是由cube的部分到全部维度随机组合形成的子集,每种组合称为一个cuboid。一个n维的cube,是由1个n维子cuboid、n个(n-1)维子cuboid、n*(n-1)/2个(n-2)维子cuboid、……、n个1维子cuboid和1个0维子cuboid构成的,总共有2n个子cuboid组成,kylin在cube构建过程中,会对2n-1个子cuboid(除0维的cuboid)进行预计算并将结果存储起来。多维数据分析时,kylin查询引擎解析查询sql语句中的表、维度、指标,判断是否有配置对应的cube模型,有则从预计算的结果中快速读取数据并返回结果给应用,没有则用spark引擎从原数据库中查询数据并返回给应用。

2、kylin的核心思想是以空间换时间,随着维度数目的增加,cuboid的数量会呈现指数型2n-1增长,预计算会耗费很长的时间同时预计算数据的保存会占用大量的存储空间。虽然kylin已经采取了分聚合组、强制维度、层级维度和联合维度等优化措施来加快预计算和减少存储,但适用场景有限,大部分应用还是需要通过所有维度组合进行所有cuboid预计算来加速查询,占用大量的存储空间,没有从根本上去解决预计算结果所占用的存储大的问题。


技术实现思路

1、本发明的目的在于提供一种基于kylin逐层算法的cube存储优化方法,旨在kylin逐层算法进行预计算的基础上,通过层级裁剪实现存储优化,并结合最近层级依赖原则保障查询性能满足应用需要。尽可能在不影响原功能的前提下,通过合理的减少预计算的cuboid,降低预计算结果所占用的存储空间是本发明要解决的问题。

2、本发明采用的技术方案是:

3、一种基于kylin逐层算法的cube存储优化方法,其包括以下步骤:

4、步骤1,cube配置:获取hive事实表和维度表信息进行cube配置,在创建cube的基础模型的基础上新建cube配置基本信息,并在高级配置中指定跳跃层数,自动计算cube的所有cuboid、直接依赖的更高维度cuboid、是否需要预计算。

5、步骤2,cube构建:扫描数据源得到cube的元数据以创建扁平化的中间表,并计算所有维度的cuboid;再从元数据库中读取并过滤需要预计算的cuboid依赖关系,从高维到低维逐步完成计算并将结果保存到hdfs中;

6、步骤3,多维度查询:获取一个多维分析查询sql,kylin查询引擎通过查询语句中的维度和指标信息确定查询涉及的cuboid;根据最近层级依赖原则找到cuboid依赖的更高维度的且已完成预计算的上级cuboid,并进行二次计算返回查询结果。

7、进一步地,步骤1具体包括以下步骤:

8、步骤1-1,在hive上创建多维度分析的事实表和维度表并配置etl调度任务将历史数据以及增量数据定期同步到hdfs上;

9、步骤1-2,登录kylin web界面并切换到数据源加载模块,将hive事实表和维度表信息加载到选中的项目中;

10、步骤1-3,创建cube的基础模型并输入模型的基本信息,选择事实表、维度表并配置表关联;同时选择维度列和指标列,并配置数据过滤条件;

11、步骤1-4,新建cube:选择cube基础模型并输入cube基本信息,选择维度列并配置指标列;同时配置分区合并规则,并在高级配置中设置跳跃层数;

12、步骤1-5,生成cube的所有维度组合id、依赖关系并标识是否需要预计算,保存到元数据中。

13、进一步地,步骤1-3中涉及分区表时,设置日期分区字段以便进行cube增量构建。

14、进一步地,步骤2具体包括以下步骤:

15、步骤2-1,设置构建分区时间段,生成cube构建任务;

16、步骤2-2,基于cube构建任务进行资源检测,连接到事实表和维度表的数据源,扫描数据源并收集元数据信息、统计信息和字典信息;

17、步骤2-3,根据事实表与维度关联的数据及维度表的维度列及度量列创建一张扁平化的中间表,并计算所有维度的cuboid;

18、步骤2-4,根据元数据库中读取并过滤的需要预计算的cuboid依赖关系,从高维到低维逐步完成计算并将结果保存到hdfs中。

19、进一步地,步骤2-4中使用逐层算法对cuboid进行一层一层的处理。

20、进一步地,步骤3具体包括以下步骤:

21、步骤3-1,提交多维分析查询的sql语句;

22、步骤3-2,通过解析sql语句的维度和指标信息,确定查询所涉及的cuboid;

23、步骤3-3,判断查询所涉及的cuboid是否已经预计算;如果判断查询涉及的cuboid已预计算,则直接查询该cuboid的数据并将结果返回给应用后结束查询;如果查询涉及的cuboid未预计算,则根据最近层级依赖原则,从元数据中保存的cuboid依赖关系中过滤出该cuboid依赖的更高维度的且已完成预计算的cuboid并执行步骤3-4;

24、步骤3-4,读取命中的cuboid的预计算数据,再根据本次查询语句中的维度和度量信息进行二次计算,将查询结果返回给应用。

25、本发明采用以上技术方案,具有如下技术特点:(1)、cube模型设计时通过指定跳跃层数,在预计算时据此进行层级裁剪,当跳跃层数n时,预计算cuboid数量约降为原来的1/(n+1),大幅降低预计算结果数据量,实现存储空间优化。(2)、cube构建时通过层级裁剪策略过滤无需预计算的cuboid,降低预计算cuboid数量,并利用逐层算法低维可从高维获取的特性,提升预计算速度。(3)、多维分析查询时,采用最近层级依赖原则,选择与当前查询语句涉及的模型中相应的cuboid最贴近且维度更高的cuboid进行二次计算,提升查询性能,满足业务多维分析的要求。



技术特征:

1.一种基于kylin逐层算法的cube存储优化方法,其特征在于:其包括以下步骤:

2.根据权利要求1所述的一种基于kylin逐层算法的cube存储优化方法,其特征在于:步骤1具体包括以下步骤:

3.根据权利要求2所述的一种基于kylin逐层算法的cube存储优化方法,其特征在于:步骤1-3中涉及分区表时,设置日期分区字段以便进行cube增量构建。

4.根据权利要求1所述的一种基于kylin逐层算法的cube存储优化方法,其特征在于:步骤2具体包括以下步骤:

5.根据权利要求4所述的一种基于kylin逐层算法的cube存储优化方法,其特征在于:步骤2-4中使用逐层算法对cuboid进行一层一层的处理。

6.根据权利要求1所述的一种基于kylin逐层算法的cube存储优化方法,其特征在于:步骤3具体包括以下步骤:


技术总结
本发明公开一种基于Kylin逐层算法的Cube存储优化方法,Cube模型设计时通过指定跳跃层数,在预计算时据此进行层级裁剪,当跳跃层数N时,预计算cuboid数量约降为原来的1/(N+1),大幅降低预计算结果数据量,实现存储空间优化。Cube构建时通过层级裁剪策略过滤无需预计算的cuboid,降低预计算cuboid数量,并利用逐层算法低维可从高维获取的特性,提升预计算速度。多维分析查询时,采用最近层级依赖原则,选择与当前查询语句涉及的模型中相应的cuboid最贴近且维度更高的cuboid进行二次计算,提升查询性能,满足业务多维分析的要求。本发明通过合理的减少预计算的cuboid,降低预计算结果所占用的存储空间。

技术研发人员:童凤娇,王升,幸仕洋,李宏,林泽杰
受保护的技术使用者:中电福富信息科技有限公司
技术研发日:
技术公布日:2024/4/17
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1