本篇内容主要讲解“如何使用Apache Kylin框架”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Apache Kylin框架”吧!
Apache Kylin 是什么?
Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
Apache Kylin框架介绍
Apache kylin 能提供低延迟(sub-second latency)的秘诀就是预计算,即针对一个星型拓扑结构的数据立方体,预计算多个维度组合的度量,然后将结果保存在hbase中,对外暴露JDBC、ODBC、Rest API的查询接口,即可实现实时查询。Kylin从Hadoop Hive中获取数据,然后经过Cube Build Engine,将Hive中的数据Build成一个OLAP Cube保存在HBase中。用户执行SQL查询时,通过Query引擎,将SQL语句解析成OLAP Cube查询,然后将结果返回给用户。
Apache Kylin核心概念
表(table):This is definition of hive tables as source of cubes,在build cube 之前,必须同步在 kylin中。
模型(model):模型描述了一个星型模式的数据结构,它定义了一个事实表(Fact Table)和多个查找表(Lookup Table)的连接和过滤关系。
Cube 描述:描述一个Cube实例的定义和配置选项,包括使用了哪个数据模型、包含哪些维度和度量、如何将数据进行分区、如何处理自动合并等等。
Cube实例:通过Cube描述Build得到,包含一个或者多个Cube Segment。
分区(Partition):用户可以在Cube描述中使用一个DATA/STRING的列作为分区的列,从而将一个Cube按照日期分割成多个segment。
立方体段(cube segment):它是立方体构建(build)后的数据载体,一个 segment 映射hbase中的一张表,立方体实例构建(build)后,会产生一个新的segment,一旦某个已经构建的立方体的原始数据发生变化,只需刷新(fresh)变化的时间段所关联的segment即可。
聚合组:每一个聚合组是一个维度的子集,在内部通过组合构建cuboid。
作业(job):对立方体实例发出构建(build)请求后,会产生一个作业。该作业记录了立方体实例build时的每一步任务信息。作业的状态信息反映构建立方体实例的结果信息。如作业执行的状态信息为RUNNING 时,表明立方体实例正在被构建;若作业状态信息为FINISHED ,表明立方体实例构建成功;若作业状态信息为ERROR ,表明立方体实例构建失败!
样例 Cube 快速入门
执行$KYLIN_HOME/bin/sample.sh,等待脚本执行完毕,导入学习工程,Kylin 提供了一个创建样例 Cube 脚本;脚本会创建五个样例 Hive 表,该表主要是记录销售信息数据。我们将基于该表进行销售相关信息进行分析。
导入学习工程后需要重新加载元素据或者是重启kylin服务才能使工程生效。这里我们采用重新加载的方式来进行处理。
访问主机: http://hostname:7070,用默认的用户名和密码 ADMIN/KYLIN 登陆 Kylin 网站
选择 project 下拉框(左上角)中的 learn_kylin 工程;可以看到该项目下存在刚刚导入的Hive库。
连接一下Hive库,查看Hive default库中的表,存在上面的五张表
进入kylin Web界面登录 》System 》reload metadata,重新加载元素据。
执行完成后可以查看导入模型,存在两个模型,本次我们主要是学习“kylin_sales_cube”
选择该数据模型,点击“Build”构建cube。
选择数据分区范围,选择一个在 2014-01-01 之后的日期(覆盖所有的 10000 样例记录)。
点击monitor,查看正在构建cube的作业,刷新查看构建进度,等待构建完成
这一步会比较耗时,因为这步会进行预计算,默认是MapReduce作业。
如果长时间没有完成,请再次点击刷新,状态信息会更新,期间遇到错误如下所示:
经查看是由于hadoop的历史任务服务器没有启动导致,执行命令开启
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
jps检测是否有JobHistoryServer进程,存在进程则证明启动成功
启动后可以,点击“ACTION”下面有个“PENDING”选项可以恢复再次运行的状态。
构建完成
查询构建完成的cube,在“Insight”选项卡中执行SQL,首先我们执行一条SQL用来统计“KYLIN_SALES”表的数目。
select count(*) from KYLIN_SALES
执行结果耗时1.77秒
再次执行耗时就非常快了,第四次执行耗时0.11秒
接下来我们执行一条业务分析的SQL,用来统计每日销售总金额和购买人数量。执行结果,结果展示较快
select part_dt, sum(price) as total_sold, count(distinct seller_id) as sellers
from kylin_sales group by part_dt order by part_dt
基于上面的SQL再次进行扩展,进行多表关联,对销售数据进行多维分析,查看不同分类下商品的销售情况。查看多表关联查询结果,速度依然很快。
SELECT sum(KYLIN_SALES.PRICE) AS price_sum,
KYLIN_CATEGORY_GROUPINGS.META_CATEG_NAME,
KYLIN_CATEGORY_GROUPINGS.CATEG_LVL2_NAME
FROM KYLIN_SALES
INNER JOIN KYLIN_CATEGORY_GROUPINGS ON KYLIN_SALES.LEAF_CATEG_ID = KYLIN_CATEGORY_GROUPINGS.LEAF_CATEG_ID
AND KYLIN_SALES.LSTG_SITE_ID = KYLIN_CATEGORY_GROUPINGS.SITE_ID
GROUP BY KYLIN_CATEGORY_GROUPINGS.META_CATEG_NAME,
KYLIN_CATEGORY_GROUPINGS.CATEG_LVL2_NAME
ORDER BY KYLIN_CATEGORY_GROUPINGS.META_CATEG_NAME ASC,
KYLIN_CATEGORY_GROUPINGS.CATEG_LVL2_NAME DESC
点击Visualization 可视化展示,用户可以选择“图形类型”,“维度”和“度量”。
到此,相信大家对“如何使用Apache Kylin框架”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。