微信搜索lxw1234bigdata | 邀请体验:数阅–数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

Apache Kylin中使用Streaming Table构建准实时Cube

Kylin lxw1234@qq.com 21866℃ 2评论

关键字:kylin、streaming table

Kylin从1.5版本开始,引入了Streaming Table,目的是为了减低OLAP分析的延时(比如Druid、ElasticSearch都支持实时数据流)。

Streaming Table周期性的从Kafka中读取数据,根据Model和Cube的定义,将计算好的数据写入HBase,以供查询。

从1.5.2版本开始,官网上给出了Streaming Table详细的使用文档:http://kylin.apache.org/docs15/tutorial/cube_streaming.html

本文基于Kylin 1.5.2.1,介绍在Kylin中基于Kafka定义Streaming Table,从而完成准实时Cube的构建。

Kafka中的数据

目前提供的Streaming Table,在Kafka中的数据必须是JSON格式,并且必须包含一个timestamp类型的字段,用作时间序列。

应该可以自己写解析器解析Kafka中的数据,这个后面再研究。

Kafka中Topic为: kylinlog2

数据格式如下:

{"city" : "上海","province" : "上海","createtime" : 1465714957000,"siteid" : "633","cookieid" : "c61cc3e9802863f5","isrv" : "0","logserver" : "logserver___172.16.213.4"}
{"city" : "广州","province" : "广东","createtime" : 1465714957000,"siteid" : "927","cookieid" : "62c35a31e7c030b9","isrv" : "1","logserver" : "logserver___172.16.213.4"}
{"city" : "深圳","province" : "广东","createtime" : 1465714957000,"siteid" : "1351","cookieid" : "1b866ce761e3119c","isrv" : "1","logserver" : "logserver___172.16.213.4"}

定义Streaming Table

kylin

在DataSource中添加”Add Streaming Table”。

kylin

复制一条JSON格式的数据,点击>>后,右边解析出JSON中包含的字段及其格式,另外,会自动添加出年、季度、月、周等时间上的衍生维度,可以根据实际需要保留或舍弃。

kylin

配置Kafka Cluster的链接信息。

kylin

保存后,可以在Tables下面看到该Streaming Table。

定义Model

kylin

基于上面的Streaming Table,定义Model。

kylin

定义维度。注意维度中一般不要将timestamp类型的时间序列作为维度,这样会导致cuboid太多,影响性能。而是选择需要的时间衍生维度,例如小时、天。

kylin

定义指标。我这里需要根据cookieid去重计算UV。

保存Model。

定义Cube

kylin

根据前面的lxw1234_streaming_model定义cube.

kylin

定义维度。

kylin

定义指标,PV和UV。

kylin

设置合并和保留时间。

保存Cube.

Build Cube

在命令行运行:

$KYLIN_HOME/bin/streaming_build.sh lxw1234_streaming_cube 300000 0

官网对于Build命令的说明如下:

The build is triggered, a separate log file will be created in $KYLIN_HOME/logs/ folder, e.g, streaming_STREAMING_CUBE_1462471500000_1462471800000.log; As the delay is 0, margin is 5 minutes, the build will take a while as most of time is waiting for message to arrive. After about 7 to 10 mintues, the build will finish.

Go to Kylin web GUI, refresh the page, and then click the cube, you should see its “source records” is a positive number now (usually be 150; 30 records per minute); Click the “HBase” tab you should see a segment is created, with a start time and end time (range is 5 mintues).

 

kylin

Build成功完成后,可以在Model页面看到Cube的元数据已更新,比如记录数和HBase中的HTable等。

这时候,需要选择Action中的Enable,将Cube可用。

查询Cube

kylin

可以正常查询Cube。

Streaming Table的自动更新

目前的版本中只提供了命令行更新,因此,需要在crontab中配置计划任务来周期性调用build命令,完成更新。

详见官方文档说明。

这块还得好好研究和改进。

 

 

 

 

 

如果觉得本博客对您有帮助,请 赞助作者

转载请注明:lxw的大数据田地 » Apache Kylin中使用Streaming Table构建准实时Cube

喜欢 (13)
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 上述开始时间是2016-07-12,能跑出数据吗?
    forevernull2016-06-27 23:19 回复
  2. 你好,方便留个邮箱或者微信号吗,咨询下kylin问题
    霜天晓月2016-09-19 16:20 回复