Java ApacheFlink与事件排序

Java ApacheFlink与事件排序,java,apache-flink,Java,Apache Flink,我是Apache Flink的新手,正在尝试从物联网设备组织数据,这些设备监控设备扫描Wifi。典型事件如下所示: {NodeId,设备MAC地址,时间,类型} 我希望能够查看MAC地址的上一个事件,如果当前事件时间小于该MAC地址上一个事件的指定间隔(例如60秒),我希望更新该MAC的运行事件总数。但是,如果间隔时间已过,我希望将聚合事件写入数据库。聚合事件的外观类似于: {NodeId,MAC地址,上次事件时间,事件总数,日期,小时} 让事情更复杂的是,我想为每个节点保留每小时和每天的运行总

我是Apache Flink的新手,正在尝试从物联网设备组织数据,这些设备监控设备扫描Wifi。典型事件如下所示:

{NodeId,设备MAC地址,时间,类型}

我希望能够查看MAC地址的上一个事件,如果当前事件时间小于该MAC地址上一个事件的指定间隔(例如60秒),我希望更新该MAC的运行事件总数。但是,如果间隔时间已过,我希望将聚合事件写入数据库。聚合事件的外观类似于:

{NodeId,MAC地址,上次事件时间,事件总数,日期,小时}

让事情更复杂的是,我想为每个节点保留每小时和每天的运行总数。为每个节点保留所有MAC地址事件的运行总数,并在相关时间段结束后输出到数据库

我已经阅读了文档,但是我有点难以理解完成这项任务所需要使用的部分


提前感谢

这听起来像是为windows生成聚合的问题

你可以这样做:

stream.keyBy(new KeySelector<Event, Integer>() {
    @Override
    public Integer getKey(Event value) throws Exception {
        return value.nodeId;
    }
}).window(EventTimeSessionWindows.withGap(Time.seconds(60)))
  .apply(new ReduceFunction<LogRow>(), new WindowFunction<LogRow, Object, Integer, TimeWindow>())
stream.keyBy(新的KeySelector(){
@凌驾
公共整数getKey(事件值)引发异常{
返回值.nodeId;
}
}).window(EventTimeSessionWindows.withGap(Time.seconds(60)))
.apply(新的ReduceFunction(),新的WindowFunction())