Kylin原理解析

1 概述

      Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark智商的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据。
      :OLAP(Online Analytical Process),联机分析处理或在线分析。
      最初由eBay开发并贡献至开发社区,它能在亚秒内查询巨大的hive表。Kylin也是由中国人主导的、唯一的Apache顶级开源项目,在开源社区有世界级的影响力。

1.1 Kylin特点
1.1.1 大数据OLAP的两个事实

(1)大数据查询要的一般是统计结果,是多条记录经过聚合函数计算后的统计值。原始的记录则不是必须的,或者访问频率和概率都极低。
(2)聚合是按维度进行的,由于业务范围和分析需求是有限的,有意义的维度聚合组合也是相对有限的,一般不会随着数据的膨胀而增长。
      Kylin基于以上两点,得到一个新的思路——预计算。应尽量多地预先计算聚合结果,在查询时刻应尽量使用预算的结果得出查询结果,从而避免直接扫描可能无限增长的原始记录。

1.1.2 Kylin特点

      Kylin的主要特点包括支持SQL接口、支持超大规模数据集、亚秒级响应、可伸缩性、高吞吐率和BI工具集成等。
(1)可扩展超快OLAP引擎Kylin是为减少在Hadoop/Spark上百亿规模数据查询延迟而设计。
(2)Hadoop ANSI SQL接口Kylin为Hadoop提供标准SQL支持大部分查询功能。
(3)交互式查询能力通过Kylin,用户可以与Hadoop数据进行亚秒级交互,在同样的数据集上提供比Hive更好的性能。
(4)多维立方体(MOLAP Cube)用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体。
(5)与BI工具无缝整合Kylin提供与BI工具的整合能力,如Tableau、PowerBI/Excel、MSTR、QlikSense、Hue和SuperSet。

1.2 Kylin工作原理

      Kylin的工作原理本质上是MOLAP(Multidimensional Online Analytical Processing)Cube,即多维立方体分析。
      这是数据分析中相当经典的理论,在关系数据库年代就已经有了广泛的应用。
      在说明MOLAP Cube之前需要先介绍一下维度(Dimension)和度量(Measure)这两个概念。

1.2.1 维度(Dimension)和度量(Measure)简介

(1)维度
      简单来讲,维度就是观察数据的角度。它通常是数据记录的一个属性,例如时间和地点等。
      比如电商的销售数据,可以从时间的维度来观察,也可以进一步细化,从时间和地区的维度来观察。
在这里插入图片描述
在这里插入图片描述

      维度一般是一组离散的值,比如时间维度上的每一个独立的日期,或者商品维度上的每一件独立的商品。
      因此统计时可以把维度值相同的记录聚合在一起,然后应用聚合函数做累加、平均、去重技术等聚合操作
(2)度量
      度量就是被聚合后的统计值,也就是聚合运算的结果,如图中的销售额,或者是销售商品的总件数。
      度量是基于数据所计算出来的考量值;它通常是一个数值,如总销售额、不同的用户数等。
      通过比较和测算度量,分析师可以对数据进行评估,比如今年的销售额相比去年有多大的增长,增长的速度是否达到预期,不同商品类别的增长比例是否合理等。
      在一个SQL查询中,Group By的属性通常就是维度,而计算出的值则是度量。

1.2.2 Cube和Cuboid

      有了维度和度量,一个数据表或数据模型上的所有子弹就可以分类了,它们要么是维度,要么是度量(可以被聚合)。于是就有了根据维度和度量做预计算的Cube理论。
      给定一个数据模型,我们可以对其上的所有维度进行组合。对于N个维度来说,组合的所有可能性共有2^n种。
      对于每一种维度的组合,将度量做聚合运算,然后将运算的结果保存为一个物化视图,称为Cuboid。
      所有维度组合的Cuboid作为一个整体,被称为Cube。
      所以简单来说,一个Cube就是许多按维度聚合的物化视图的集合。
      下面来列举一个具体的例子:
      假定有一个电商的销售数据集,其中维度包括:时间(Time)、商品(Item)、地点(Location)和供应商(Supplier),度量包括:销售额(GMV)。
      那么所有维度的组合就有2^4=16种。
在这里插入图片描述

(1)一维度(1D)的组合有[Time]、[Item]、[Location]和[Supplier]4种;
(2)二维度(2D)的组合有[Time,Item]、[Time,Location]、[Time、Supplier]、 [Item,Location]、[Item,Supplier]、[Location,Supplier]6种;
(3)三维度(3D)的组合也有4种;
(4)最后零维度(0D)和四维度(4D)的组合各有1种。
      计算Cuboid,即按维度来聚合销售额。如果用SQL语句来表达计算Cuboid[Time,Loca-tion],那么SQL语句如下:

SELECT Time,Location,Sum(GMV) as GMV FROM Sales GROUP BY Time,Location;

      将计算的结果保存为物化视图,所有Cuboid物化视图的总称为Cube。

1.2.3 工作原理

      Kylin的工作原理就是对数据模型做Cube预

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值