大家好,欢迎来到本篇博客,博主是一名刚入大数据行业的小白,利用空闲的时间来分享自己所学的知识,帮助和博主一样刚处于起步阶段的同学,水平不高,若有什么错误和纰漏之处恳请大佬不吝赐教,目前个人博客只有CSDN:
https://zhenyu.blog.csdn.net/
,感谢大家的支持,谢谢
送给大家一句话:今日事,今日毕本篇博客主要讲解:Kylin的工作原理
Apache Kylin的工作原理本质上是 MOLAP(多维立方体分析)
维度就是观察数据的角度,例如:
度量就是被聚合的统计值,也是聚合运算的结果
时间(维度) | 销售额(度量) |
---|---|
2019 1Q | 1.7M |
2019 2Q | 2.1M |
2019 3Q | 1.6M |
2019 4Q | 1.8M |
时间(维度) | 地区(维度) | 销售额(度量) |
---|---|---|
2019 1Q | 中国 | 1.0M |
2019 1Q | 北美 | 0.7M |
2019 2Q | 中国 | 1.5M |
2019 2Q | 北美 | 0.6M |
2019 3Q | 中国 | 0.9M |
2019 3Q | 北美 | 0.7M |
2019 4Q | 中国 | 0.9M |
2019 4Q | 北美 | 0.9M |
一个数据表或数据模型上的字段就它们要么是维度,要么是度量(可以被聚合)
给定一个数据模型,可以对其上的所有维度进行组合。对于N个维度来说,组合的所有可能性共有2 的N 次方种
对于每一种维度的组合,将度量做聚合运算,然后将运算的结果保存为一个物化视图,称为Cuboid(立方形)
所有维度组合的Cuboid作为一个整体,被称为Cube(立方体)。一个Cube就是许多按维度聚合的物化视图的集合。
说明 | 维度1地区 | 维度2时间 | 维度3 | 维度4 |
---|---|---|---|---|
取值 | 0或1 | 0或1 | 0或1 | 0或1 |
Apache Kylin的工作原理是对数据模型做Cube预计算,并利用计算的结果加速查询。具体工作过程如下:
高效OLAP分析:
Apache Kylin系统可以分为在线查询和离线构建两部分。
在线查询模式主要处于上半部分,离线构建处于下半部分。以下为Kylin技术架构的具体内容:
数据源主要是Hadoop Hive,数据以关系表的形式输入,且必须符合星形模型,保存着待分析的用户数据。根据元数据的定义,构建引擎从数据源抽取数据,并构建Cube
Kylin可以使用MapReduce或者Spark作为构建引擎。构建后的Cube保存在右侧的存储引擎中,一般选用HBase作为存储
完成了离线构建后,用户可以从上方查询系统发送SQL进行查询分析
Kylin提供了各种Rest API、JDBC/ODBC接口。无论从哪个接口进入,SQL最终都会来到Rest服务层,再转交给查询引擎进行处理
SQL语句是基于数据源的关系模型书写的,而不是Cube
--------
感谢大家的支持,若有什么不正确的地方还请大家能及时的反馈,记得点赞收藏支持一下!