首页 > 其他分享 >3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)

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

时间:2023-07-01 10:36:53浏览次数:52  
标签:bin dim cube kylin server4 sales jdbc dw 基本操作


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、数据查詢)_hive

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、数据查詢)_hive_03


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

3)、创建模型(Model)

1、 設置模型名称

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


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

2、指定事实表

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

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

3、 指定维度表

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

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

4、 指定待分析的指标

設置數據分析的字段

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

5、 指定分区和过滤条件

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

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

4)、创建立方体(Cube)

1、选择数据模型

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

2、指定维度

設置分析的維度

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


3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_数据分析_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、数据查詢)_apache kylin_16


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

4、指定刷新设置

3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_apache kylin_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、数据查詢)_apache kylin_20


3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_hive_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、数据查詢)_hadoop_22

三、示例2(kylin)

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

1)、创建Model

指定关联表、关联条件

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


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

3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_hadoop_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、数据查詢)_hadoop_27


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


3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_apache kylin_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、数据查詢)_hive_30

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

1)、创建Model

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

2)、创建Cube

指定cube维度

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


3、apache-kylin-3.1.3-bin-hadoop3基本操作(创建model和cube、数据查詢)_apache kylin_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的使用比较。



标签:bin,dim,cube,kylin,server4,sales,jdbc,dw,基本操作
From: https://blog.51cto.com/alanchan2win/6598246

相关文章

  • 5、apache-kylin-3.1.3-bin-hadoop3 segment管理及JDBC操作
    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增量构建、全量构建详细示例......
  • Arrangement排列•Combination组合•Counting计数•Binomial Theorem二项式定理
    符号C-Combination组合数[1]A-Arrangement(旧教材为P-Permutation)N-Number元素的总个数(自然数集合).M-参与选择的元素个数(M不大于N,两者都是自然数集合).!-Factorial阶乘.Arrangement排列与Combination组合:注意:n,m都是自然数,且m<=n,下同.排列的定义:从n......
  • CubeMX TIM 配置AutoReloadPreload
    CubeMX 配置定时器的时候,出现如下选项: 成员变量AutoReloadPreload的取值范围TIM_AUTORELOAD_PRELOAD_DISABLE预装载功能关闭TIM_AUTORELOAD_PRELOAD_ENABLE预装载功能开启用于设置自动重载寄存器TIMx_ARR的预装载功能,即自动重装寄存器的内容是更新事件产生时写入有......
  • 一个基于STM32H743芯片和SOEM协议栈的EtherCAT主站源码。该源码提供了配套的CUBE工程,
    一个基于STM32H743芯片和SOEM协议栈的EtherCAT主站源码。该源码提供了配套的CUBE工程,使用的是SOEM协议栈的1.3.1版本。此外,还可以使用NUCLEO-H743ZI开发板进行配套开发。该系统支持DC同步,并且可以与多种驱动器型号配合使用,包括汇川IS620N、三洋RS3、赛孚德ASD620B、埃斯顿ProNet、......
  • Maximum Depth of Binary Tree
    Giventherootofabinarytree,returnitsmaximumdepth.Abinarytree'smaximumdepth isthenumberofnodesalongthelongestpathfromtherootnodedowntothefarthestleafnode.Solution:classSolution(object):defmaxDepth(self,root):......
  • Bing访问问题
    访问www.bing.com,但是问问题的时候报错:Sorry,lookslikeyournetworksettingsarepreventingaccesstothisfeatureheader-editor插件的安装与请求头的配置按照上面步骤安装并配置好即可访问......
  • 重新搞懂Git,掌握日常命令和基本操作
    1、gitGit是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到超大型项目的所有内容。Git易于学习,占用空间很小,性能快如闪电。它超越了Subversion,CVS,Perforce和ClearCase等SCM工具,具有廉价的本地分支,方便的暂存区域和多个工作流程等功能。2、git&平台git是一个......
  • 离线安装mysql报错解决方法:/usr/sbin/mysqld: error while loading shared libraries:
    Linux:centos7.664位mysql:5.6使用离线方式安装:rpm-ivh--nodepsmysql*,执行systemctlstartmysqld.service发现启动不了,通过vi/var/log/mysql.log看到如下关键字:libraries:libaio.so.1,之前也是按照网上帖子各种修改都没有解决问题,详细报错如下:/usr/sbin/mysqld:error......
  • bind:success 但是无法执行下面的操作
    perror:success但是无法执行后续操作intsockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd<0) { perror("socketerr"); return-1; } structsockaddr_insaddr; saddr.sin_family=AF_INET; saddr.sin_port=htons(atoi(argv[2])); saddr.sin_addr.s_......
  • postman中 form-data、x-www-form-urlencoded、raw、binary的区别
    1、form-data:           就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;......