Kylin系列之二:原理介绍

2018年4月15日

15:52

因何而生

Kylin和hive的区别

1. hive主要是离线分析平台,适用于已经有成熟的报表体系,每天只要定时运行即可。

2. Kylin主要是MLOAP(多维在线分析平台)。在线意味着提供快速的相应速度。主要适用于分析师不知道自己需要哪些数据,建立怎样的模型,需要不断的摸索,查询一致形成一个完整的模型和方案。

3. 通常的做法是在Kylin中进行数据的调研,探索,建立模型。形成固定模式后在hive中进行运行。

原理与架构

1. 基本原理是使用MR或者Spark对数据进行全方面的计算;然后将结果集存储到HBase中;分析师在进行数据调研时就可以直接访问HBase的结果集了。

2. 因为在Kylin进行预计算的过程中,我们是不知道分析师需要哪些结果的,因此,Kylin会尽可能多的尽心预计算,这样就会耗费很多的运算和存贮资源。因此如何对Cuboid进行修剪以及segmen的合并等是优化的重点

3. 如图我们可以看出Kylin的架构:

A. 预计算逻辑:通过REST API 或者JDBC,ODBC的方式,将Cube提交给Kylin引擎,引擎将Cube解析为相应的MR程序,从hive中获取数据相关的元素据,然后在Hadoop集群中运行,并将结果存储在HBase中。Cube预计算结束

B. 查询预计算逻辑:通过REST API 或者JDBC,ODBC的方式,将Cube提交给Kylin引擎,Kylin将数据解析为相应的HBase代码,在HBase中进行查询,然后将结果返回给调用方

4. Kylin在本质上只是一个查询解析引擎,将Cube或者SQL方言解析为相应的查询语句,然后脚本相应的服务端进行计算

A. Hive:主要提供表的元数据信息。Kylin链接Hive获取查询表在hdfs上的路径。

B. Hadoop:提供基础的数据存储服务。

C. MR/Spark:提供计算引擎,Kylin将Cube解析为相应的执行代码,交给MR/Spark运行。

D. HBase:负责存储Kylin中相关的Cube,Model元数据,并存放Cube进行预计算的结果集。

E. Zeppline/Tableau:进行结果数据的查询与展示。

架构如下(截图来自官网):

基本概念

维度(Dimension)和度量(Measure)

1. 维度是观察数据的角度,比如:人的性别,学生的年级等。在SQL中,我们可以认为被group by的字段就是维度。也可以理解为统计中的称名数据

2. 度量是表示可以用来计算的列,比如学生考试成绩,消费者的交易金额等。在SQL中我们可以认为可以被聚合函数进行计算,比如sum(),avg()的都是度量

3. 维度和度量并不是绝对意义的分割的,他们之间是可以相互转换的。比如我们要统计学生分数的分布情况,这个时候分数就是一个维度列;当我们统计学生的平均分时,这个时候分数就是一个度量列。

4. 维度的基数:即维度列字段的个数。如性别这一维度的基数是2,只有男女;季节这一维度列的基数是4,因为只有春夏秋冬四季。但是如果将学生的学号作为维度列的话,一个学校有1万名学生的话,该维度的基数列为1万。通产基数超过一百万的维度称为超高基数维度,需要引起Cube设计者注意。

事实表,维度表

1. 这是BI中的概念。各种维度加上都做构成一个事实。比如学生的学号与姓名,加上考试成绩构成一个事实

雪花与星型模型

1. 所谓的雪花模型指一个事实表链接多个维度表,且维度之间存在关系,维度表拥有自己的维度表

2. 所谓的星型模型只一个事实表链接多个维度表,维度表之间没有关系

3. Kylin可以处理星型模型,对雪花模型无能为力(或者需要转换成星型模型)

Cube和Cuboid

1. Cube是一个表中选中参与预计算的所有维度的所有基数的组合总称,而Cuboid是其中的一个组合,所有的Cuboid的总体就是所有的维度的所有基数。

2. 如下面的表,假设我们分析的维度列有两个(也就是该cube中有两个维度列,分别为性别国家),那所有的Cuboid是:【男】,【女】,【中国】,【英国】,【美国】,【男,中国】,【女,中国】,【男,英国】,【女,英国】,【男,美国】,【女,美国】。其中【】就是一个Cuboid,所有的可能的集合就是一个Cube(当然在具体分析中可以对Cuboid进行裁剪,以进行优化)

3. 也就说,Kylin的预计算,就是对度量列的统计,然后group by Cube中的所有Cuboid.

4. 可以想象的,如果维度过多或者维度的基数过高,就会导致Kylin在进行计算时,会将数据膨胀到很大,耗费计算和存储资源。因此如何优化Cube的构建将是优化的突破点

关于表和图的角色分析

1. 学生信息表和课程表是维度表,学生成绩表是事实表

2. 学生成绩表中的学号和课程编号通常在SQL中被放入group by中,是维度;而成绩经常被sum,avg是度量

3. 如果仅有三张表,那么三张表构成一个星型模型(这里设计的既不符合RDMS的设计要求);假设在学生信息表的国家并不是国家的名称,而是国家的编码,在另外有一张国家表,专门用来存储国家和国家代码的映射关系。那么学生信息表,学生成绩表,国家表就构成了一个雪花模型。

数据表示例

学生信息表:


学号


性别


国家


姓名


001



中国


张三


002



英国


李四


003



美国


王五

学生成绩表:


学号


课程编号


成绩


001


1


100


001


2


99


002


1


88


002


2


77


003


1


66


004


2


55

课程表


课程编号


课程名称


教材


1


英语


怎么也学不会


2


计算机


从入门到放弃

雪花模型

原文地址:https://www.cnblogs.com/yanghuabin/p/8893494.html

时间: 2024-10-09 22:41:34

Kylin系列之二:原理介绍的相关文章

Android RakNet 系列之二 功能介绍

简介 RakNet 已经成功地在Android平台上测试成功.RakNet的文档很多,实现起来很简单,下面对Raknet功能细节进行详细了解. 详情 1.RakNet使用哪些数据结构? 结构文件 描述 DS_BinarySearchTree.h 二叉搜索树,以及AVL平衡二叉搜索树 DS_BPlusTree.h B+树,用于快速查询,删除,和插入 DS_BytePool.h 返回某个大小门限的数据块,减少内存碎片 DS_ByteQueue.h 用于读写字节的队列 DS_Heap.h 堆数据结构体

Python零基础学习系列之二--Python介绍及环境搭建

1-1.Python简介: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Public License)协议. Python(英国发音:/?pa?θ?n/ 美国发音:/?pa?θɑ?n/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第

使用腾讯云 GPU 学习深度学习系列之二:Tensorflow 简明原理【转】

转自:https://www.qcloud.com/community/article/598765?fromSource=gwzcw.117333.117333.117333 这是<使用腾讯云 GPU 学习深度学习>系列文章的第二篇,主要介绍了 Tensorflow 的原理,以及如何用最简单的Python代码进行功能实现.本系列文章主要介绍如何使用 腾讯云GPU服务器 进行深度学习运算,前面主要介绍原理部分,后期则以实践为主. 往期内容: 使用腾讯云 GPU 学习深度学习系列之一:传统机器学

跟老杨学java系列(二) PNP训练法介绍

跟老杨学java系列(二) PNP训练法介绍 声明:以下内容可能会有做广告的嫌疑,哈哈~~.大家不想看的忽略就好..欢迎大家留言探讨技术问题.其他问题概不回复. (书接上回)PNP训练法是国内java培训机构-乐橙谷推出的一种针对java培训的学习训练方法.该训练法摒弃了传统的以章节知识点为线索的教学方式,改为以完整的项目开发过程为线索.以对功能点的分析设计驱动出的知识点为授课内容.以迭代为教学手段,学习难度由浅入深,让学生在充分了解软件开发过程的基础上,熟练掌握项目开发经验.深入掌握相关开发技

WPF入门教程系列二——Application介绍

原文:WPF入门教程系列二--Application介绍 一.Application介绍 WPF和WinForm 很相似, WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只有一个 Application 实例存在.和 WinForm 不同的是WPF Application默认由两部分组成 : App.xaml 和 App.xaml.cs,这有点类似于 Asp.Net WebForm,将定义和行为代码相分离. 微

单片机小白学步系列(二十二) IO口:蜂鸣器的使用/三极管的工作原理

2014-11-22更新:感谢Ireland同学的提醒,修改了PNP型三极管驱动电路,蜂鸣器从三极管的发射极改到了集电极,这样效果会更好,电路也更合理.同时增加了备注4. ====================================== 这一篇继续上一篇的内容,我们来做实验四:按键控制有源蜂鸣器,按下按键蜂鸣器响,释放按键不响. 蜂鸣器 实验四之前简单介绍下蜂鸣器.蜂鸣器有两种,无源蜂鸣器和有源蜂鸣器,一般用于发出报警的声音.声音是由震动产生的,大家都见过喇叭,喇叭里面有磁铁和线圈.

单片机小白学步系列(二十三) IO口原理知识补充:双向IO口、互补推挽、高阻态

由于之前考虑不周,本篇在IO口原理知识的基础上,进一步补充一些知识. ================================================= 双向IO口的输出:互补推挽 在51单片机的P0口工作在普通IO口模式下,为准双向IO口.而工作在第二功能状态下时,则为标准的双向IO口.由于双向IO口的输出,要求能输出高低电平,通常会采用互补推挽电路. 在第二功能状态下,51单片机P0口采用的是互补推挽的输出方式.何为互补推挽呢?下面是它的等效电路图. 当P0第二功能作为输出时

单片机小白学步系列(二十) IO口原理

IO口操作是单片机实践中最基本最重要的一个知识,本篇花了比较长的篇幅介绍IO口的原理.也是查阅了不少资料,确保内容正确无误,花了很长时间写的.IO口原理原本需要涉及很多深入的知识,而这里尽最大可能做了简化方便理解.这样对于以后解决各种IO口相关的问题会有很大的帮助. IO口等效模型是本人独创的方法,通过此模型,能有效的降低对IO口内部结构理解的难度.并且经查阅资料确认,这种模型和实际工作原理基本一致. ========================================== 前面说了

faster-rcnn系列原理介绍及概念讲解

faster-rcnn系列原理介绍及概念讲解 原文地址:https://www.cnblogs.com/inception6-lxc/p/8390729.html