在OLAP分析引擎领域,Apache Kylin可以说是一个重要的成员,相比于大规模并行处理指导思想下的Hive、Presto等组件,Apache Kylin采取了新的计算模式,提供不同的解决方案。今天的大数据开发分享,我们就主要来讲讲OLAP分析引擎Apache Kylin入门。
Apache Kylin简介
Apache Kylin的特殊之处,在于采用“预计算”的模式,用户只需要提前定义好查询维度,Kylin将帮助我们进行计算,并将结果存储到HBase中,为海量数据的查询和分析提供亚秒级返回,是一种典型的“空间换时间”的解决方案。
Apache Kylin的出现不仅很好地解决了海量数据快速查询的问题,也避免了手动开发和维护提前计算程序带来的一系列麻烦。
Apache Kylin最初由eBay公司开发,并贡献给Apache基金会,但是目前Apache Kylin的核心开发团队已经自立门户,创建了Kyligence公司。
Apache Kylin核心概念
在Apache Kylin基础学习阶段,对其中会涉及到的核心概念要建立清楚的认知。
①数据仓库
数据仓库简单来说,就是将不同数据源的数据整合到一起,通过多维分析等方式为企业提供决策支持和报表生成。数据仓库中存储的则主要是历史数据,主要目的是为企业决策提供支持,所以可能存在大量数据冗余,但利于多个维度查询,为决策者提供更多观察视角。
在传统BI领域中,数据仓库的数据存储在Oracle、MySQL等数据库中,而在大数据领域中最常用的数据仓库就是Apache Hive,Hive也是Apache Kylin默认的数据源。
②OLAP
OLAP(Online Analytical Process),联机分析处理,以多维度的方式分析数据,一般带有主观的查询需求,多应用在数据仓库。与之对应的是OLTP(Online Transaction Process),联机事务处理,侧重于数据库的增删查改等常用业务操作。
③维度和度量
维度和度量是数据分析中的两个基本概念。维度是人们观察数据的特定角度,是考虑问题时的一类属性。它通常是数据记录的一个特征,如时间、地点等。同时,维度具有层级概念,可能存在细节程度不同的描述方面,如日期、月份、季度、年等。
在数据仓库中,可以在数学上求和的事实属性称为度量。例如,可以对度量进行总计、平均、以百分比形式使用等。度量是维度模型的核心。
通常,在单个查询中检索数千个或数百万个事实行,其中对结果集执行数学方程。在一个SQL查询中,Group By的属性通常就是维度,而其所计算的值则是度量。
④Cube、Cuboid和Cube Segment
Cube,即数据立方体,它可以对原始数据建立多维度索引,大大加快数据的查询效率。Cuboid特指Apache Kylin中在某一种维度组合下所计算的数据。Cube Segment指针对源数据中的某一片段计算出来的Cube数据。通常,数据仓库中的数据数量会随时间的增长而增长,而Cube Segment也是按时间顺序构建的。
⑤事实表和维度表
事实表(Fact Table)是指存储事实记录的表,如系统日志、销售记录等,并且是维度模型中的主表,代表着键和度量的集合。事实表的记录会不断地动态增长,所以它的体积通常远大于其他表,通常事实表占据数据仓库中90%或更多的空间。
维度表(Dimension Table),也称维表或查找表(Lookup Table),是与事实表相对应的一种表。维度表的目的是将业务含义和上下文添加到数据仓库中的事实表和度量中。维度表是事实表的入口点,维度表实现了数据仓库的业务接口。
它们基本上是事实表中的键引用的查找表。它保存了维度的属性值,可以与事实表做关联,相当于将事实表上经常出现的属性抽取、规范出来用一张表进行管理,常见的维度表有:日期表(存储日期对应的周、月、季度等属性)、地点表(包含国家、省/州、城市等属性)等。
⑥星型模型和雪花模型
星形模型(Star Schema)是数据挖掘中常用的几种多维数据模型之一。它的特点是只有一张事实表,以及零到多个维度表,事实表与维度表通过主外键相关联,维度表之间没有关联,就像许多小星星围绕在一颗恒星周围,所以名为星形模型。
另一种常用的模型是雪花模型(SnowFlake Schema),就是将星形模型中的某些维表抽取成更细粒度的维表,然后让维表之间也进行关联,这种形状酷似雪花的的模型称为雪花模型。
还有一种更为复杂的模型,具有多个事实表,维表可以在不同事实表之间公用,这种模型被称为星座模型。
目前,Apache Kylin既支持星形数据模型,也支持雪花数据模型,其他模型可以通过一定的转换,变为星形模型或雪花模型,这里不做具体讨论。
关于大数据开发,OLAP分析引擎Apache Kylin入门,以上就为大家做了简单的介绍了。在OLAP分析引擎领域,Apache Kylin值得一学,有时间可以多多去深入一下。