Kylin实践—— Kylin的使用以及Model和Cube构建详细流程

Posted 扫地增

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kylin实践—— Kylin的使用以及Model和Cube构建详细流程相关的知识,希望对你有一定的参考价值。

Kylin如何使用?

  1. 首先,在测试环境启动Hadoop、Hive、HBase、Zookeeper
  2. 然后,在测试环境/home/hadoop/kylin/kylin-2.5.1-bin-hbase中启动Kylin,执行如下命令:
[hadoop@kb-testhadoop01 kylin-2.5.1-bin-hbase]$ bin/kylin.sh start

注意:启动前执行jps查看Hadoop、Hive、HBase、Zookeeper是否启动,如出现以下信息则kylin启动成功。

在这里插入图片描述

  1. http://kb-testhadoop01:7070/kylin/查看Web页面
  2. 进入Kylin输入
    默认的用户名:ADMIN
    密码:KYLIN

在这里插入图片描述

  1. 进入到Kylin首页如下图所示:

在这里插入图片描述

  1. 在首页中有两个按钮一个是Manager Project、一个是Add Project,我们可以使用这两个按钮来创建一个我们的第一个工程,这两个点那个都可以。这里我就点Manager Project

在这里插入图片描述

  1. 点击Manager Project进入一下页面,因为是第一次进入我们发现只有一个按钮Add Project

在这里插入图片描述

我们点击add project来添加一个工程:需要填以下信息如图所示:

在这里插入图片描述在这里插入图片描述

到这里我们的项目就建完了,建完后会出现以下信息

在这里插入图片描述

那么建完项目以后我们要要干什么呢?我们是要分析数据对吧,数据在哪里呢?
数据是不是在hive里面,可能大家会想现在你数据还没有呢,是不是要先去hive中到数据呢,其实确实需要的。

需求:实现按照维度(工作地点)统计员工信息

3.1 数据准备

Hive中创建数据,分别创建部门和员工外部表,并向表中导入数据。

(1)原始数据

部门表数据:

10 ACCOUNTING 1700
20 RESEARCH 1800
30 SALES 1900
40 OPERATIONS 1700

员工表数据:

7369 SMITH CLERK 7902 1980-12-17 800.00 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10
7788 SCOTT ANALYST 7566 1987-4-19 3000.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987-5-23 1100.00 20
7900 JAMES CLERK 7698 1981-12-3 950.00 30
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
7934 MILLER CLERK 7782 1982-1-23 1300.00 10
(2)建表语句

创建部门表

create external table if not exists test.kylin_test_dept
(
    deptno int,
    dname string,
    loc int
)
row format delimited fields terminated by '\\t';

创建员工表

create external table if not exists test.kylin_test_emp
(
    empno int,
    ename string,
    job string,
    mgr int,
    hiredate string,
    sal double,
    comm double,
    deptno int
)
row format delimited fields terminated by '\\t';
(3)查看创建的表,确保表已存在在这里插入图片描述
(4)向外部表中导入数据

导入数据

load data local inpath '/home/hadoop/datas/dept.txt' into table  test .kylin_test_dept;
load data local inpath '/home/hadoop/datas/emp.txt' into table  test .kylin_test_emp;

查询结果

hive > select * from  test .kylin_test_emp;

hive > select * from  test .kylin_test_dept;

在这里插入图片描述

这个时候我们点击上面的菜单选项Model,回到首页,然后我们点击下面的DataSource我们发现在里面三个加载我们的数据源的按钮。如下图所示:

在这里插入图片描述

因为刚才我们已经在hive中建立数据表,所以我们不使用load table(手动填表名,多个表使用逗号分隔),如果是已经有了表和数据请使用load table from tree,这里我们就使用这种方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同步完成后我们发现现在表已经过来了,但是表里并没有数据,过来的只是表的元数据,如果现在发现有表加载错了也可以点击Unload table移除

在这里插入图片描述
在这里插入图片描述

到这里我们的表已经加载过来了,下面我们就要定义星型模型了,我们要让Kylin知道那个表是事实表,那个表是维度表,
既然我们要定义模型,那么我们点击Models,然后我们要新建一个模型点击New->new model

在这里插入图片描述
进入如下界面:
在这里插入图片描述
在这里插入图片描述

那么,如何定义一个模型呢?首先我们要给模型添加一个名字和描述然后点 next

在这里插入图片描述

进入第二步data Models来定义我们的模型,首先我们需要选择一张表作为事实表,然后再选一张表作为维度表

在这里插入图片描述

在添加维度表时也就是Lookuptable时,我们需要指定他们之间相互关联的外键,这里在选择join时有两种一个是left join一个是inner join这里我们使用内链接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下一步我们就需要指定那些是我们分析的维度
在这里插入图片描述

到这里我们的维度就建好了,下面我们建立度量Measures的选择只能是在事实表中的字段,不能是维度表中的字段

在这里插入图片描述

这里进行设置过滤条件,和分区信息,也就是增量表(一段时间一个分区)和全量表(每一次都将所有的数据备份)的设置,因为在数仓中表需要分这两种类型,增量表一段时间一个分区所以这个partition就是为了给增量表设置的,这里就需要理解,增量表每个一段时间增加一些新的数据,所以新增数据的这个分区我们也需要构建一个Cube,在查询时Kylin才能进行查询。

在这里插入图片描述

然后我们点save保存然后点yes,到这里我们的model星型模型已将构建好了这里我们就可以去构建我们的Cube了。

在这里插入图片描述

下面我们就点new Cube,我们可已经进行如下操作:

在这里插入图片描述
进行维度细化:
在这里插入图片描述在这里插入图片描述
选完之后,接着我们选择度量
在这里插入图片描述

我们发现他有一个默认的度量就是Count,然后点击Measure添加度量,注意对于平均值,因为后边有很多的分区合并,这样求平均值就不方便了

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

然后一路next最后save->yes

在这里插入图片描述
做临时宽表
在这里插入图片描述

越向外维度也就越少
预计算:点击action->build构建Cube,大家知道Cube构建的过程就是预计算的过程

在这里插入图片描述

Build之后我们可以通过Monitor实现对任务进行监控,监控页面具体介绍如下:

在这里插入图片描述

在这里我们点击右下角蓝色箭头可以展现kylin构建Cube流程

在这里插入图片描述
在这里插入图片描述
这个执行流程比较长,一会会给大家一步步的介绍:
在这里插入图片描述

构建完Cube(也就是执行完预计算):
我们就要进行查询了首先我们开来介绍下在哪里查询:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当我们点save会出现这样一个页面我们submit之后,那么结果被保存到哪里去了呢?

在这里插入图片描述

刚才我们是不是说了一个saved queries,那我们来看是不是结果就被保存到这里来了

在这里插入图片描述

那么我们刚才执行了这么多的sql我想在执行之前的sql怎么办呢一个sql好几百行我不可能重新写吧!其实我们刚才也注意到其实kylin是有一个Query History的,那么我们来看:

在这里插入图片描述

hive查询和kylin查询简单对比:

执行sql1:

select 
   d.loc,
   e.job,
   d.dname,
   sum(e.sal) 
from kylin_test_emp e 
join kylin_test_dept d 
on e.deptno = d.deptno 
group by d.dname,
         d.loc,
         e.job;

在这里插入图片描述
在这里插入图片描述

执行sql2:
在这里插入图片描述
在这里插入图片描述

我们可以看到这两者之间是有比较大的差距的,我们可以想一下如果是在数据量极大的情况下使用kylin是要比使用hive快很多倍的,
到这里呢?我们还有system这个页面没有介绍,那么我们来看:

在这里插入图片描述

其实从功能键我们就可以知道这个页面主要是和修改配置有关系,一般情况下很少能用的到,这里我们就不详细说了,有兴趣的可以自己去了解一下,大家也看到Kylin我就装在了我们的测试集群:用户名:ADMIN密码:KYLIN注意都是大写。

那下面我们要了解什么呢?刚才大家还记得在kylin里面构建ModelCube的时候,我有些高级的设置是没有说的,那么我现在就来和大家说一下:Cube 构建流程.

以上是关于Kylin实践—— Kylin的使用以及Model和Cube构建详细流程的主要内容,如果未能解决你的问题,请参考以下文章

实践 | Apache Kylin在4399大数据平台的应用

kylin案例分享收集

Kylin实践—— Kylin安装启动

Kylin实践—— Kylin架构介绍

Apache Kylin在美团数十亿数据OLAP场景下的实践

Kylin 4 使用和优化在有赞的实践