我正在尝试使用hazelcast jet对来自文件的连续数字流求和
pipe
.drawFrom(Sources.fileWatcher)<dir>))
.map(s->Integer.parseInt(s))
.addTimestamps()
.window(WindowDefinition.sliding(10000,1000))
.aggregate(AggregateOperations.summingDouble(x->x))
.drainTo(Sinks.logger());
几个问题
addTimestamp
方法,我只需要进行无限流求和答案 0 :(得分:0)
回答第一和第二季度:
您正在寻找rollingAggregate
,不需要时间戳或窗口。
pipe
.drawFrom(Sources.fileWatcher(<dir>))
.rollingAggregate(AggregateOperations.summingDouble(Double::parseDouble))
.drainTo(Sinks.logger());
回答第三和第四季度:fileWatcher
源不是容错的。原因是它读取本地文件,并且当成员去世时,本地文件将始终不可用。作业重新启动时,它将从当前位置开始读取,并且会丢失在作业停止时添加的数字。
此外,由于您使用全局聚合,因此来自所有文件的数据将被路由到单个群集成员,而其他成员将处于空闲状态。