• 欢迎访问蜷缩的蜗牛博客 蜷缩的蜗牛
  • 微信搜索: 蜷缩的蜗牛 | 联系站长 kbsonlong@qq.com
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

大数据 lxw1234@qq.com 2年前 (2016-06-13) 35次浏览 已收录

关键字: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

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

在 DataSource 中添加”Add Streaming Table”。

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

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

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

配置 Kafka Cluster 的链接信息。

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

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

定义 Model

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

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

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

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

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

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

保存 Model。

定义 Cube

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

根据前面的 lxw1234_streaming_model 定义 cube.

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

定义维度。

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

定义指标,PV 和 UV。

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

设置合并和保留时间。

保存 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).

 

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

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

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

查询 Cube

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

可以正常查询 Cube。

Streaming Table 的自动更新

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

详见官方文档说明。

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

 

 

 

 

 

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

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


蜷缩的蜗牛 , 版权所有丨如未注明 , 均为原创丨 转载请注明Apache Kylin 中使用 Streaming Table 构建准实时 Cube
喜欢 (0)
[]
分享 (0)