首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Siddhi:增量聚合

Siddhi:增量聚合
EN

Stack Overflow用户
提问于 2018-09-10 19:09:16
回答 1查看 160关注 0票数 2

我想用Siddhi按时间分组数据。我有一个基于https://docs.wso2.com/display/SP400/Incremental+Analysis的测试。

代码语言:javascript
复制
@App:name("DataAggregation")
@App:description("Incremental aggregation")
define stream InputStream (sensorid long, value double, timestamp long);
@store( type="rdbms", jdbc.url="jdbc:mysql://localhost:3306/test", username="root", password="xxx", jdbc.driver.name="com.mysql.jdbc.Driver")
define aggregation DataAggregation from InputStream select sensorid, sum(value) as total group by sensorid aggregate by timestamp every hour ... month;

我发送多个事件:

代码语言:javascript
复制
sensorid:1, value: 1.0, timestamp:2018-09-10 01:00
sensorid:1, value: 2.0, timestamp:2018-09-10 02:00
...
sensorid:1, value: 23.0, timestamp:2018-09-10 23:00
sensorid:1, value: 24.0, timestamp:2018-09-11 00:00
sensorid:1, value: 25.0, timestamp:2018-09-11 01:00
...

Siddhi保存每小时的数据,并计算每日数据。如果我发送一些八月份的事件:

代码语言:javascript
复制
sensorid:1, value: 10.0, timestamp:2018-08-10 01:00
sensorid:1, value: 20.0, timestamp:2018-08-10 02:00
...
sensorid:1, value: 230.0, timestamp:2018-08-10 23:00
sensorid:1, value: 240.0, timestamp:2018-08-11 00:00
sensorid:1, value: 250.0, timestamp:2018-08-11 01:00

为什么八月的事件被忽略了,Siddhi没有存储它们?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-09-11 03:07:27

在Siddhi 4.x.x - 4.1.x (用于流处理器4.0.0 - 4.2.0)中,增量聚合乱序事件处理使用最低粒度的缓冲区进行处理。在上面的聚合中,它是针对小时的。但是,在您的注释定义中没有定义@BufferSize注释,因此所有乱序事件都会被删除。在您的情况下,乱序事件晚了一个月,这些事件不能通过使用缓冲区来处理。

请尝试在WSO2 SP 4.3.0-rc1中使用相同的注释,它使用最新的Siddhi 4.2.x,其中乱序事件是在内部计算的,没有使用缓冲区。因此,上面的场景将提供准确的聚合。请注意,WSO2 SP 4.3.0 GA仅在9月15日发布,上面的包只是一个候选版本,但可以用于试用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52256525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档