Apache Kylin的Cube是如何构建的
坚持原创,写好每一篇文章
我们之前讲了Apache Kylin在大厂盛行以及它处理数据的流程是怎样的,其实Apache Kylin对数据模型有一定的要求,这篇文章我将对你讲解一下。
多维数据模型
多维数据模型有星型模型、雪花模型和事实星座模型。
星型模型是以一个主要的事实表为中心,其余表围绕着这个表发散,这就是星型表。如下图所示:
雪花模型相比星型模型更加细化,它同样以事实表为基础,表围绕着这个中心表四处扩散
还有一种是星座模式,是由多个星型模型构成,而Apache Kylin支持的模型是星型模型和雪花模型,这两种数据模型也是经常用到的数据模型。
Cube的创建与构建
Apache Kylin的服务占用的端口是7070,当我们安装启动好Apache Kylin后,可以选择模型中的数据源来调用Hive表元数据,当所有的表都导入后就可以根据这些数据选择维度和量度然后选择分区和过滤条件来创建数据模型,数据模型创建好之后,我们就可以根据数据模型创建Cube,具体就是创建Cube的维度和量度,设置Cube的数据刷新频率,还有一些高级的设置像对维度属性的设置和存储编码。
当Cube创建完后,它是状态是不可用的,Cube中没有数据,需要我们来进行构建。具体构建Cube的步骤是从Hive中来读取数据,然后会根据维度和量度来统计数据,形成Cuboid,多个Cuboid组成了有数据的Cube,就可以保存到HBASE中了。Cube构建的方式由全量构建和增量构建,全量构建一般针对的是事实表数据系小或者更新频率比较低的时候,而增量构建是就在分段数据保存,更新数据也是分段更新的,这些分段的数据还可以根据情况来合并。相对于全量构建增量构建更加高效,因为它不需要对历史数据重复计算。
Cube的查询
在查询数据的时候我们通过sql就可以进行数据的查询,一条sql进来的时候会先根据关键字进行词法分析,然后生成逻辑执行计划,根据逻辑执行计划来找到Cuboid的数据并返回结果,如果Cube中没有相关的数据,会根据查询路由路由到别的查询引擎中比如Spark、Hive
总结
这篇文章讲了多维数据的模型,Apache Kylin中一般使用星型模型和雪花模型,然后介绍了Cube的创建、数据的构建和查询的过程,对于Cube的构建有增量和全量之分,增量分段进行数据构建,相比全量构建更加高效。
❤️ 感谢大家
如果你觉得这篇内容对你挺有有帮助的话:
- 欢迎关注我❤️,点赞????????,评论????,转发????
- 关注
盼盼小课堂
,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。 - 有不当之处欢迎批评指正。