在flink中,如何验证在给定窗口中是否没有接收到相同的用户数据



我有一个IOT设备向kafka主题发送数据,包括名字、姓氏、电子邮件ID、事件时间等数据。我必须验证在流处理的定义操作窗口中没有为同一用户接收到其他事件。例如,如果我在5分钟的窗口内获得用户X的详细信息3次,我应该只处理(添加到接收器(从用户X接收的第一个数据和接下来要丢弃的两个记录。

最明显的解决方案是通过用户数据对事件进行键控,并减少事件,只留下第一个。

类似这样的东西:

dataStream
.keyBy(event -> event.emailId()) // Key by emailId
.reduce(new ReduceFunction<Event>() {
@Override
public Integer reduce(Event value1, Event value2)
throws Exception {
return event1; // always leave only first event
}
});

相关内容

  • 没有找到相关文章

最新更新