我们试图实现每小时事件计数的时间序列。我们希望在CEP中进行每小时的计数,并将输出存储在数据存储/nosql中。缺少的是我们想要存储的是给定一天每小时的计数。
为此,我们需要在每次timebatch窗口到期时从CEP输出当前时间戳。
有没有人能解释一下如何使用WSO2 CEP实现这一点??
谢谢RP
发布于 2015-05-10 10:26:58
我认为你应该使用BAM而不是CEP,因为你要做的看起来更像是一个map-reduce任务。
你看过它了吗?
发布于 2015-05-11 11:17:24
希望您使用的是WSO2 CEP3.1.0。目前RDBMSCEP4.0.0正在开发中,一旦RDBMS发布,就会有一个WSO2发布器(输出适配器),您可以在其中指定连接并直接发布输出流值。
您可以使用带有siddhi查询的执行计划来实现时间戳逻辑。要了解有关siddhi查询语言的更多信息,请参阅WSO2 Siddhi文档。enter link description here
下面是一个示例执行计划,其中包含一个siddhi查询,用于检查给定时间窗口(1分钟)内的房间温度值,并将平均温度和房间号写入输出流。如果您希望将这些内容存储在数据库中,则可以为输出流提供一个RDBMS发布器(输出适配器)。
/* Enter a unique ExecutionPlan */
@Plan:name('testPlan')
/* Enter a unique description for ExecutionPlan */
-- @Plan:description('ExecutionPlan')
/* define streams and write query here ... */
@Import('inStream:1.0.0')
define stream inStream (temperature double, roomNumber int);
@Export('outStream:1.0.0')
define stream outStream (temperature double, roomNumber int);
from inStream#window.time(1 min)
select avg(temperature) as temperature,roomNumber
group by roomNumber
having temperature>= 70
insert into outStream;
发布于 2015-05-12 14:59:36
您可以在select处使用time:currentTime()
扩展,以从Siddhi 3.0/WSO2CEP4.0获取时间窗口的过期时间。有关示例,请查看this test case。
https://stackoverflow.com/questions/30126171
复制相似问题