Siddhi:增量聚合

时间:2018-09-10 11:09:16

标签: siddhi

我想和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

为什么八月事件被忽略而Siddhi不存储它们?

谢谢

1 个答案:

答案 0 :(得分: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日发布,并且上述软件包只是一个候选发布版本,可以用于试用。

相关问题