3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)

apache-kylin-3.1.3-bin-hadoop3 系列文章

1、apache-kylin-3.1.3-bin-hadoop3介绍及部署、验证详解
2、apache-kylin-3.1.3-bin-hadoop3集群部署
3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)
4、apache-kylin-3.1.3-bin-hadoop3增量构建、全量构建详细示例
5、apache-kylin-3.1.3-bin-hadoop3 segment管理及JDBC操作
6、apache-kylin-3.1.3-bin-hadoop3 cube优化方向及减少cuboids和降低膨胀率详细示例



本文简单的介绍了kylin的基本使用示例,也给出了hive和kylin的使用比较。
本文中第一个示例详细的介绍了kylin的使用步骤,以及与hive的使用简单对比;第二个示例单独的使用kylin来实现,仅仅给出了最后一个示例的hive执行时间的对比。
本文依赖hive环境好用、kylin环境好用。
本文部分数据来源于互联网。

一、准备基本的测试数据

准备一些测试表、测试数据。

  • Hive中创建表
  • 将数据从本地文件导入到Hive
0: jdbc:hive2://server4:10000> use test;
No rows affected (0.031 seconds)
0: jdbc:hive2://server4:10000> show tables;
+-----------+
| tab_name  |
+-----------+
+-----------+
No rows selected (0.034 seconds)
0: jdbc:hive2://server4:10000> create table dw_sales(id string,date1 string,channelId string, productId string, regionId string,amount int,price double)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile;
No rows affected (1.465 seconds)
0: jdbc:hive2://server4:10000> show tables;
+-----------+
| tab_name  |
+-----------+
| dw_sales  |
+-----------+
1 row selected (0.048 seconds)
0: jdbc:hive2://server4:10000> select * from dw_sales;
+--------------+-----------------+---------------------+---------------------+--------------------+------------------+-----------------+
| dw_sales.id  | dw_sales.date1  | dw_sales.channelid  | dw_sales.productid  | dw_sales.regionid  | dw_sales.amount  | dw_sales.price  |
+--------------+-----------------+---------------------+---------------------+--------------------+------------------+-----------------+
+--------------+-----------------+---------------------+---------------------+--------------------+------------------+-----------------+
No rows selected (1.478 seconds)
0: jdbc:hive2://server4:10000> create table dim_channel(channelId string, channelName string )ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile;
No rows affected (0.074 seconds)
0: jdbc:hive2://server4:10000> create table dim_product(productId string, productName string )ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile;
No rows affected (0.067 seconds)
0: jdbc:hive2://server4:10000> create table dim_region(regionId string,regionName string)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile;
No rows affected (0.077 seconds)
0: jdbc:hive2://server4:10000> show tables;
+--------------+
|   tab_name   |
+--------------+
| dim_channel  |
| dim_product  |
| dim_region   |
| dw_sales     |
+--------------+
4 rows selected (0.036 seconds)
0: jdbc:hive2://server4:10000> LOAD DATA LOCAL INPATH '/usr/local/bigdata/testdata/dw_sales_data.txt' OVERWRITE  INTO TABLE dw_sales;
No rows affected (0.481 seconds)
0: jdbc:hive2://server4:10000> select * from dw_sales;
+--------------+-----------------+---------------------+---------------------+--------------------+------------------+-----------------+
| dw_sales.id  | dw_sales.date1  | dw_sales.channelid  | dw_sales.productid  | dw_sales.regionid  | dw_sales.amount  | dw_sales.price  |
+--------------+-----------------+---------------------+---------------------+--------------------+------------------+-----------------+
| 0001         | 2019-02-01      | 01                  | 01                  | 010                | 1                | 3400.0          |
| 0002         | 2019-02-01      | 02                  | 02                  | 021                | 2                | 6800.0          |
....
| 0026         | 2019-02-02      | 01                  | 04                  | 010                | 1                | 3400.0          |
| 0027         | 2019-02-02      | 01                  | 04                  | 010                | 1                | 3400.0          |
+--------------+-----------------+---------------------+---------------------+--------------------+------------------+-----------------+

0: jdbc:hive2://server4:10000> LOAD DATA LOCAL INPATH '/usr/local/bigdata/testdata/dim_channel_data.txt' OVERWRITE  INTO TABLE dim_channel;
No rows affected (0.205 seconds)
0: jdbc:hive2://server4:10000> LOAD DATA LOCAL INPATH '/usr/local/bigdata/testdata/dim_product_data.txt' OVERWRITE  INTO TABLE dim_product;
No rows affected (0.177 seconds)
0: jdbc:hive2://server4:10000> LOAD DATA LOCAL INPATH '/usr/local/bigdata/testdata/dim_region_data.txt' OVERWRITE  INTO TABLE dim_region;
No rows affected (0.262 seconds)

二、示例1-按照日期统计订单总额/总数量

1、hive实现方式

select date1, sum(price) as total_money, sum(amount) as total_amount from dw_sales group by date1;

0: jdbc:hive2://server4:10000> select date1, sum(price) as total_money, sum(amount) as total_amount from dw_sales group by date1;
WARN  : Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
+-------------+--------------+---------------+
|    date1    | total_money  | total_amount  |
+-------------+--------------+---------------+
| 2019-02-01  | 57800.0      | 17            |
| 2019-02-02  | 61200.0      | 18            |
+-------------+--------------+---------------+

2、kylin实现方式

使用kylin实现,需按照如下步骤进行

  • 创建项目(Project)
  • 创建数据源(DataSource),指定有哪些数据需要进行数据分析
  • 创建模型(Model),指定具体要对哪个事实表、那些维度进行数据分析
  • 创建立方体(Cube),指定对哪个数据模型执行数据预处理,生成不同维度的数据
  • 执行构建、等待构建完成
  • 再执行SQL查询,获取结果,从Cube中查询数据

1)、创建项目(Project)

在这里插入图片描述

2)、创建数据源(DataSource)

kylin本身是没有表的,其是使用hive的元数据进行数据处理。在使用kylin前,需要将需要分析的数据从hive中导入到kylin中。
将Hive中的表都导入到Kylin中 在添加表名中,指定数据库名test.dim_channel,test.dim_product,test.dim_region,test.dw_sales
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3)、创建模型(Model)

1、 設置模型名称

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

2、指定事实表

設置事實表,在該步驟可以設置相關的維度表,並進行關聯
在这里插入图片描述

3、 指定维度表

設置數據分析的維度,可以是事實表中的字段,也可以是維度表中的字段
在这里插入图片描述

4、 指定待分析的指标

設置數據分析的字段
在这里插入图片描述

5、 指定分区和过滤条件

該步驟可以設置對需要分析的數據範圍進行選擇
在这里插入图片描述

4)、创建立方体(Cube)

1、选择数据模型

在这里插入图片描述

2、指定维度

設置分析的維度
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、指定度量

設置需要計算的字段,為將來應用進行預指定
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、指定刷新设置

在这里插入图片描述

5、指定执行引擎

設置數據分析的計算引擎,當前可以選擇的是MR、spark、Flink,前提是在部署的時候已經做好了相關部署
在这里插入图片描述
後面一直next,直到保存即可。

5)、执行构建

該步驟實際上是進行了預計算,也就是根據選擇計算引擎對將要分析的數據進行計算,然後將數據結果存儲在Hbase中。
在这里插入图片描述
在这里插入图片描述
該步驟完成后就可以在Insight中進行查詢

6)、执行SQL语句分析

select
  date1,
  sum(price) as total_money,
  sum(amount) as total_amount
from
  test.dw_sales
group by date1;

在这里插入图片描述

三、示例2(kylin)

1、按照订单渠道名称统计订单总额/总数量

1)、创建Model

指定关联表、关联条件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2)、创建Cube

略,参考上文示例1

3)、执行构建、等待构建完成

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

4)、执行SQL查询,获取结果

select
    t2.channelid,
    t2.channelname,
    sum(t1.price) as total_money,
    sum(t1.amount) as total_amount
from dw_sales t1
inner join dim_channel t2 on t1.channelid = t2.channelid
group by t2.channelid, t2.channelname

在这里插入图片描述

2、按照日期、区域、产品维度统计订单总额/总数量

1)、创建Model

  • 指定关联表、关联条件
    在这里插入图片描述
  • 指定维度字段
    在这里插入图片描述

2)、创建Cube

指定cube维度
在这里插入图片描述
在这里插入图片描述

3)、执行构建、等待构建完成

該步驟是預計算過程,耗時都在此處

4)、执行SQL查询,获取结果

select
    t1.date1, 
    t2.regionid, 
    t2.regionname, 
    t3.productid, 
    t3.productname,
    sum(t1.price) as total_money,
    sum(t1.amount) as total_amount
from dw_sales t1
inner join dim_region t2 on t1.regionid = t2.regionid
inner join dim_product t3 on t1.productid = t3.productid
group by 
    t1.date1, 
    t2.regionid, 
    t2.regionname, 
    t3.productid, 
    t3.productname
order by 
    t1.date1,
    t2.regionname,
    t3.productname

在这里插入图片描述
查詢時間是0.29秒,但其預計算時間是近6分鐘
在这里插入图片描述

  • Hive執行時間88秒
    在这里插入图片描述
    以上,简单的介绍了kylin的基本使用示例,也给出了hive和kylin的使用比较。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一瓢一瓢的饮 alanchanchn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值