Siddhi:增量聚合

问题描述 投票:2回答:1

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

@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;

我发送了多个事件:

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保存每小时数据并计算每日数据。如果那时我发送八月份的一些事件:

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

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

谢谢

siddhi
1个回答
1
投票

在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日发布,上述包只是候选版本,但可用于试用。

© www.soinside.com 2019 - 2024. All rights reserved.