注意:本教程以对approvalhistory(t表)和t_processapply(t2表)innerjoin为例,描述利用kylin进行OLAP的过程。

 

1.登录页面

①登录:http://168.168.207.3:7070/kylin(其中168.168.207.3为你所安装kylin主机的ip地址,7070为端口号,在浏览器上输入如上地址即可正确跳转到登录地:http://168.168.207.3:7070/kylin/login)

②登录账号与密码:Kylin默认账号为:ADMIN默认密码:KYLIN(区分大小写,必须全都大写)

2.Project

初次登录Kylin时,需要新建一个Project,才能利用kylin为我们做OLAP分析。

点击左上角的加号(Add Project):

输入Project相应信息:

本教程之后的讲述均在已经创建好的Project--Test中进行,具体如下图所示:

3.Datasource:

存在于Hive中的数据库会同步显示到kylin web页面中的Datasource下。

选中某个数据库下的某张表,在页面右侧即会展现该表的字段信息,下图以数据库weishu,表A_1为例:

Datasource的右手边有四个小图标,它们的从左往右功能分别是:加载Hive表,从同步的目录中导入,即将上张图中左侧的数据库中的表导入,上传Hive表,添加流表。(工作中常用的是第二个,即从同步的目录中导入相应的hive table)分别如下所示:

4.Model

成功创建好Project后,需要为我们将要inner join的两张表,创建一个model(模型),如下图所示,点击+NEW按钮,选择New Model:

①填写相应的model info:

②选择事实表:

事实表(Fact Table)是中心表,包含了大批数据并不冗余,其数据列可分为两类:

包含大量数据事实的列;

与维表(Dimension Table)的primary key相对应的foreign key。

③添加查找表

Lookup Table包含对事实表的某些列进行扩充说明的字段。本案例以T_PROCESSAPPLY为lookup table。

可以看到,kylin提供了两种join的方式:left join和inner join,本案例采用的是inner join的方式。

点击New Join Condition添加新的join条件,这里我们将两张表的WORKFLOWNUMBER做关联,所以join条件按下图的方式进行选择:

选择以及添加好Fact table和Look Table后的图例如下:

④.添加Dimensions:

维表(Dimension Table)是由fact table与lookup table逻辑抽象出来的表,包含了多个相关的列(即dimension),以提供对数据的多维观察;其中dimension的值的数目称为cardinatily

事实表APPROVALHISTORY的WORKFLOWNUMBER、和APPROVALTIME被抽出来做dimension,与查找表T_PROCESSAPPLY表被抽出来的dimension:WORKFLOWNUMBER和STAUS组合分析数据。

⑤添加Measure columns:

Measure为事实表的列度量,Kylin提供诸如:

Sum

Count

Max

Min

Average

Distinct Count (based on HyperLogLog)

等函数,一般配合group by dimesion使用。

本案例以APPROVALHISTORY中的WORKFLOWNUMBER字段做列度量:

⑥Settings:

Cube中细讲,点击右下角的save

点击弹窗中的yes,完成model:innerjoint_t2的创建

5.Cube

创建cube,点击+New,选中New Cube

①Cube info

②Diemnsions

选择Auto Generator:

本案例全部勾选:

选中并点击OK后的图例如下图所示:

两种维度说明:目的------->为了减少cuboid的数目

Normal,为最常见的类型,与所有其他的dimension组合构成cuboid。

Derived,指该dimensions与维表的primary key是一一对应关系,可以更有效地减少cuboid数量,详细的解释参看这里;并且derived dimension只能由lookup table的列生成。

③Measures:

kylin会为每一个cube创建一个聚合函数为count(1)的度量,它不需要关联任何列,用户自定义的度量可以选择SUM、COUNT、DISTINCT COUNT、MIN、MAX,而每一个度量定义时还可以选择这些聚合函数的参数,可以选择常量或者事实表的某一列,一般情况下我们当然选择某一列。这里我们发现kylin并不提供AVG等相对较复杂的聚合函数(方差、平均差更没有了),主要是因为它需要基于缓存的cube做增量计算并且合并成新的cube,而这些复杂的聚合函数并不能简单的对两个值计算之后得到新的值,例如需要增量合并的两个cube中某一个key对应的sum值分别为A和B,那么合并之后的则为A+B,而如果此时的聚合函数是AVG,那么我们必须知道这个key的count和sum之后才能做聚合。这就要求使用者必须自己想办法自己计算了。

无特殊要求,保持默认即可:

④Refresh Setting

设置增量cube信息,首先需要选择事实表中的某一个时间类型的分区列(貌似只能是按照天进行分区),然后再指定本次构建的cube的时间范围(起始时间点和结束时间点),这一步的结果会作为原始数据查询的where条件,保证本次构建的cube只包含这个闭区间时间内的数据,如果事实表没有时间类型的分区别或者没有选择任何分区则表示数据不会动态更新,也就不可以增量的创建cube了。

可以在该选项中选择分区字段,根据这个字段来获取每次预计算的输入数据区间,Kylin中将每一个区间计算的结果称之为一个Segment,预计算的结果存储在hbase的一个表中。通常情况下这个分区字段对应hive中的分区字段,以天为例子,每次预计算一天的数据。这个过程称之为build。

除了build这种每个时间区间向前或者向后的新数据计算,还存在两种对已完成计算数据的处理方式。第一种称之为Refresh,当某个数据区间的原始数据(hive中)发生变化时,预计算的结果就会出现不一致,因此需要对这个区间的segment进行刷新,即重新计算。第二种称之为Merge,由于每一个输入区间对应着一个Segment,结果存储在一个htable中,久而久之就会出现大量的htable,如果一次查询涉及的时间跨度比较久会导致对很多表的扫描,性能下降,因此可以通过将多个segment合并成一个大的segment优化。但是merge不会对现有数据进行任何改变。

说句题外话,在kylin中可以设置merge的时间区间,默认是7、28,表示每当build了前一天的数据就会自动进行一个merge,将这7天的数据放到一个segment中,当最近28天的数据计算完成之后再次出发merge,以减小扫描的htable数量。但是对于经常需要refresh的数据就不能这样设置了,因为一旦合并之后,刷新就需要将整个合并之后的segment进行刷新,这无疑是浪费的。

注意:kylin不支持删除某一天的数据,如果不希望这一天数据存在,可以在hive中删除并重新refresh这段数据

⑤Advanced Settings

1、设置Rowkey

2、设置维度组

3、设置Cube Size

在进入到设置RowKey的时候会看到每一个维度的设置(Derived维度看到的是外键列而不是Derived的列),每一个维度可以设置ID(通过拖拽可以改变每一个维度的ID)、Mandatory、Dictionary和Length。

设置rowkey,这一步的建议是看看就可以了,不要进行修改,除非对kylin内部实现有比较深的理解才能知道怎么去修改。当然这里有一个可以修改的是mandatory dimension,如果一个维度需要在每次查询的时候都出现,那么可以设置这个dimension为mandatory,可以省去很多存储空间,另外还可以对所有维度进行划分group,不会组合查询的dimension可以划分在不同的group中,这样也会降低存储空间。

注意:new aggregation group,是kylin 1.5的新特性;

老版本中的agg是需要选中所有可能被使用的纬度字段,以供查询;但存在高纬度的查询需求,例如查询某订单编号编号的数据,这时应该仅仅做filter,而不需要为此做cube,但在老版本的agg中,是不允许在group中来制定prune细节。

而新的特性中,new agg允许设置field是compute(参与cube)还是skip(不参与cube)

⑥Configuration Overwrites

写入配置,直接Next。

⑦Overview

配置概览,t3改写为t2,因为innerjoint_t2已经建立,所以教程虽按t2讲,实则创建的是innerjoint_t3。

点击save,选择Yes,创建成功

6.Build

创建成功后的cube是disable状态,需要build一下:

建立build job成功:

7.Monitor

点击monitor,实时观测build状态。

点击每个build后的查看具体状态:

Build成功:

此时,cube状态变为Ready:

8.Insight:

SQL查询语句:

成功查询:

注意事项:

①如果cube在build中出现错误,需要在monitor中discard对应的cube才能重新build

②删除model前必须先drop掉里面的cube,而drop掉cube前如果cube是Ready状态需要先disable。

《Apache Kylin Web界面汉化》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. python需要多久-在传智播客培训python需要多久?
  2. Helm 3 发布 | 云原生生态周报 Vol. 27
  3. python安装numpy库用清华镜像_Mac下基于Anaconda通过清华镜像安装Tensorflow
  4. JS 中 indexOf 的用户及注意事项
  5. 中国金融出版社出版的2016版《个人贷款》
  6. python 中移去文件的只读属性
  7. 第十二期:七种优秀的浏览器兼容性测试工具
  8. 网站免费空间和服务器的区别,网站空间和服务器的区别
  9. 怎样一次性将一个word文档中所有图片保存
  10. [HNOI 2014]道路堵塞
  11. 无向图的割顶、桥、BCC和eBCC相关
  12. Meego系统的终结 诺基亚QT部门解散
  13. python安装包国内镜像,pip使用国内镜像
  14. 基于NPP-VIIRS夜间灯光数据的中国多中心城市识别
  15. mysql存储过程输出_MySQL存储过程
  16. 【音视频—基础】分辨率、码率和帧率
  17. 安卓平板usb变显示器_三星DeX—安卓生产力之巅
  18. php 控制usb打印,usb口打印机的指令打印和驱动打印
  19. html点击出现对勾,css伪类 右下角点击出现 对号角标表示选中的示例代码
  20. 无限地球危机的观看顺序

热门文章

  1. openfire运行ant命令控制台中文乱码问题
  2. Android app 退出到后台,点击图标后再次重新启动
  3. 解决SDK未授权问题
  4. 谈谈C#文件监控对象FileSystemWatcher使用感受
  5. ES6补充-异步与等待、符号、迭代器、代理以及生成器
  6. ESTABLISHED状态
  7. 如何使用迅雷批量下载文件
  8. Country Code In SPEC IEEE 802.11
  9. Understanding memory usage on Linux
  10. python强制暂停线程_如何暂停线程(python)