写在前面: 博主是一名软件工程系大数据应用开发专业大二的学生,昵称来源于《爱丽丝梦游仙境》中的Alice和自己的昵称。作为一名互联网小白,
写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于起步阶段的萌新
。由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!个人小站:http://alices.ibilibili.xyz/ , 博客主页:https://alice.blog.csdn.net/ 尽管当前水平可能不及各位大佬,但我还是希望自己能够做得更好,因为一天的生活就是一生的缩影
。我希望在最美的年华,做最好的自己
!
上一篇博客已经为各位朋友带来了Kylin的简介以及安装部署(?第一个"国产"Apache顶级项目——Kylin,了解一下!)。本篇博客,博主为大家带来的是关于Kylin的实际应用操作!
码字不易,先赞后看,养成习惯
入门案例
测试数据表结构介绍
1、(事实表)dw_sales
列名 | 列类型 | 说明 |
---|---|---|
id | string | 订单id |
date1 | string | 订单日期 |
channelid | string | 订单渠道(商场、京东、天猫) |
productid | string | 产品id |
regionid | string | 区域名称 |
amount | int | 商品下单数量 |
price | double | 商品金额 |
2、(维度表_渠道方式)dim_channel
列名 | 列类型 | 说明 |
---|---|---|
channelid | string | 渠道id |
channelname | string | 渠道名称 |
3、(维度表_产品名称)dim_product
列名 | 列类型 | 说明 |
---|---|---|
productid | string | 产品id |
productname | string | 产品名称 |
4、(维度表_区域)dim_region
列名 | 列类型 | 说明 |
---|---|---|
regionid | string | 区域id |
regionname | string | 区域名称 |
导入测试数据
为了方便后续学习Kylin的使用,需要准备一些测试表、测试数据。
1.Hive中创建表 2.将数据从本地文件导入到Hive
操作步骤
1、使用 beeline 连接Hive
代码语言:javascript复制!connect jdbc:hive2://node1:10000
2、创建并切换到 itcast_dw 数据库
代码语言:javascript复制create database itcast_kylin_dw;
use itcast_kylin_dw;
3、找到资料中的hive.sql文件,执行sql、创建测试表
代码语言:javascript复制-- 查看表是否创建成功
show tables;
4、在home目录创建~/dat_file 文件夹,并将测试数据文件上传到该文件夹中
mkdir ~/dat_file
导入数据到表中
代码语言:javascript复制-- 导入数据
LOAD DATA LOCAL INPATH '/root/dat_file/dw_sales_data.txt' OVERWRITE INTO TABLE dw_sales;
LOAD DATA LOCAL INPATH '/root/dat_file/dim_channel_data.txt' OVERWRITE INTO TABLE dim_channel;
LOAD DATA LOCAL INPATH '/root/dat_file/dim_product_data.txt' OVERWRITE INTO TABLE dim_product;
LOAD DATA LOCAL INPATH '/root/dat_file/dim_region_data.txt' OVERWRITE INTO TABLE dim_region;
5、执行一条SQL语句,确认数据是否已经成功导入
指标和维度
在完成了上面的数据准备操作后,我们就开始进行kylin的实际操作了。但我们还需要先了解什么是指标和维度?
先来看下面这个问题
相信各位朋友已经有了自己的答案,这里提供一种思路:
红色字体是指标/度量?还是维度? 答案:指标/度量【到底要看什么?获取什么?】 蓝色字体是指标/度量?还是维度? 答案:维度【怎么看!怎么获取!】
结论:需求决定哪些是维度,哪些是指标。
好了,明确了什么是维度,什么是指标之后,我们就可以开启kylin的使用之旅了~
按照日期统计订单总额/总数量(Kylin方式)
要使用Kylin进行OLAP分析,需要按照以下方式来进行。
1、创建项目(Project)
2、创建数据源(DataSource)
- 指定有哪些数据需要进行数据分析
3、创建模型(Model)
- 指定具体要对哪个事实表、那些维度进行数据分析
4、创建立方体(Cube)
- 指定对哪个数据模型执行数据预处理,生成不同维度的数据
5、执行构建、等待构建完成
6、再执行SQL查询,获取结果
- 从Cube中查询数据
具体步骤:
1、创建项目(Project)
2、创建数据源(DataSource)
3、创建模型(Model)
设置model名称
直接下一步
save保存完毕,就可以看见一个已经创建好了的Model
4、创建立方体(Cube)
保存完毕,我们可以看见一个新的Cube已经创建好了~
5、执行构建、等待构建完成
此时进度条还是灰色的,稍等片刻,等到加载完毕~
待加载完毕,我们可以发现此时的cube状态已经变成READY
了。
6、再执行SQL查询,获取结果
从Cube中查询数据
我们可以发现用Kylin执行HQL语句的速度最早为3.88
s,第二次执行就变成了0.01
s
那如果在Hive的命令行窗口执行相同的HQL语句,耗时将为多少呢?
可以看到Hive将HQL转化成MapReduce程序去执行后,查询的时间为12.764
s,这个速度与上面用Kylin执行的速度相比,差了近100倍。如果数据量更大一些,Kylin的优势将会更加明显。
下面我们来总结一下上面这个入门案例:
如果有认真执行上面演示的案例 我相信推导出下面的关系应该不难
因为我们在设置Model的时候,会选择事实表中所有有可能用到的维度,而在设置Cube的时候,就需要根据实际的SQL需求,选择确定使用到的维度。
在创建一个Cube的时候,第一步就需要选择依赖于一个Model,所以Model和Cube的对应关系应该是一对多,且Model包含Cube的关系。
另外,在Cube内的元素,也是可以重复的,不同的Cube就相当于一个Model的子集。
关于前面的步骤中,设置维度—维度就是sql中GroupBY后面的字段.
设置指标/度量—指标/度量就是sql中select 后面的字段. 整个配置过程都来源于SQL,来源于需求。
运用所学这里再回顾一下刚介绍Kylin时所介绍的架构图
可以看出,整个流程分为创建项目—引入数据—创建模型—创建cube –编译 – 查询
另外,我们在最后查看最终计算完毕的结果数据时,可以发现一些额外的信息。
Kylin将查询后的结果写入到了HBase的表中
我们根据显示的信息,去HBase中查询
可以发现虽然内容被加密了,但是能证明有数据
说明初次体验Kylin体验还是不错的~
总结
本篇博客用一个入门案例为大家演示了Kylin的基本操作,关于Kylin的进阶操作会在后续的博文中为大家揭晓,敬请期待!
如果以上过程中出现了任何的纰漏错误,烦请大佬们指正?
受益的朋友或对大数据技术感兴趣的伙伴记得点赞关注支持一波?