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

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

数据格式如下:

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

定义Streaming Table

在DataSource中添加”Add Streaming Table”。

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

配置Kafka Cluster的链接信息。

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

定义Model

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

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

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

保存Model。

定义Cube

根据前面的lxw1234_streaming_model定义cube.

定义维度。

定义指标,PV和UV。

设置合并和保留时间。

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

 

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

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

查询Cube

可以正常查询Cube。

Streaming Table的自动更新

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

详见官方文档说明。

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

 

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

你可能感兴趣的:(kylin,大数据)