0
点赞
收藏
分享

微信扫一扫

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和降低膨胀率详细示例


文章目录

  • apache-kylin-3.1.3-bin-hadoop3 系列文章
  • 一、准备基本的测试数据
  • 二、示例1-按照日期统计订单总额/总数量
  • 1、hive实现方式
  • 2、kylin实现方式
  • 1)、创建项目(Project)
  • 2)、创建数据源(DataSource)
  • 3)、创建模型(Model)
  • 1、 設置模型名称
  • 2、指定事实表
  • 3、 指定维度表
  • 4、 指定待分析的指标
  • 5、 指定分区和过滤条件
  • 4)、创建立方体(Cube)
  • 1、选择数据模型
  • 2、指定维度
  • 3、指定度量
  • 4、指定刷新设置
  • 5、指定执行引擎
  • 5)、执行构建
  • 6)、执行SQL语句分析
  • 三、示例2(kylin)
  • 1、按照订单渠道名称统计订单总额/总数量
  • 1)、创建Model
  • 2)、创建Cube
  • 3)、执行构建、等待构建完成
  • 4)、执行SQL查询,获取结果
  • 2、按照日期、区域、产品维度统计订单总额/总数量
  • 1)、创建Model
  • 2)、创建Cube
  • 3)、执行构建、等待构建完成
  • 4)、执行SQL查询,获取结果


本文简单的介绍了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)

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

2)、创建数据源(DataSource)

kylin本身是没有表的,其是使用hive的元数据进行数据处理。在使用kylin前,需要将需要分析的数据从hive中导入到kylin中。

将Hive中的表都导入到Kylin中 在添加表名中,指定数据库名test.dim_channel,test.dim_product,test.dim_region,test.dw_sales

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


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


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

3)、创建模型(Model)

1、 設置模型名称

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


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

2、指定事实表

設置事實表,在該步驟可以設置相關的維度表,並進行關聯

3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_离线计算_07

3、 指定维度表

設置數據分析的維度,可以是事實表中的字段,也可以是維度表中的字段

3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_离线计算_08

4、 指定待分析的指标

設置數據分析的字段

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

5、 指定分区和过滤条件

該步驟可以設置對需要分析的數據範圍進行選擇

3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_离线计算_10

4)、创建立方体(Cube)

1、选择数据模型

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

2、指定维度

設置分析的維度

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


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


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

3、指定度量

設置需要計算的字段,為將來應用進行預指定

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


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


3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_离线计算_17

4、指定刷新设置

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

5、指定执行引擎

設置數據分析的計算引擎,當前可以選擇的是MR、spark、Flink,前提是在部署的時候已經做好了相關部署

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


後面一直next,直到保存即可。

5)、执行构建

該步驟實際上是進行了預計算,也就是根據選擇計算引擎對將要分析的數據進行計算,然後將數據結果存儲在Hbase中。

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


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


該步驟完成后就可以在Insight中進行查詢

6)、执行SQL语句分析

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

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

三、示例2(kylin)

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

1)、创建Model

指定关联表、关联条件

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


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

3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_离线计算_25

2)、创建Cube

略,参考上文示例1

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

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


3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_离线计算_27


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


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

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

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

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

1)、创建Model

  • 指定关联表、关联条件
  • 指定维度字段

2)、创建Cube

指定cube维度

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


3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_离线计算_32

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

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


查詢時間是0.29秒,但其預計算時間是近6分鐘

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

  • Hive執行時間88秒

    以上,简单的介绍了kylin的基本使用示例,也给出了hive和kylin的使用比较。



举报

相关推荐

Hadoop3:大数据的基本介绍

0 条评论