Apache flink “是什么意思?”;键控数据流上的滚动还原;数据流缩减函数

Apache flink “是什么意思?”;键控数据流上的滚动还原;数据流缩减函数,apache-flink,Apache Flink,我试图理解关键数据流上的“滚动”reduce 我有一个场景,我想忽略某些在特定时间到达的消息。例如,第一个事件->中间事件->最后一个事件,我只想捕获第一个和最后一个事件,并想从流中跳过/删除中间事件。重要的是,它应该基于一些关键。。在我的情况下,它不会发生时,我申请关键 滚动减速器可能不是您想要的。它将一个元素作为状态保存。每当接收到新元素时,它会对存储的元素和新元素应用一个reduce功能。函数的结果将被发出并更新状态。此运算符没有结束元素的概念,并且始终具有状态并等待下一个元素处理 我认为

我试图理解关键数据流上的“滚动”reduce


我有一个场景,我想忽略某些在特定时间到达的消息。例如,第一个事件->中间事件->最后一个事件,我只想捕获第一个和最后一个事件,并想从流中跳过/删除中间事件。重要的是,它应该基于一些关键。。在我的情况下,它不会发生时,我申请关键

滚动减速器可能不是您想要的。它将一个元素作为状态保存。每当接收到新元素时,它会对存储的元素和新元素应用一个
reduce功能
。函数的结果将被发出并更新状态。此运算符没有结束元素的概念,并且始终具有状态并等待下一个元素处理

我认为有状态的
FlatMapFunction
ProcessFunction
将是适合您的用例的正确方法。函数将开始元素存储为状态,并等待结束元素到达。一旦接收到它,就发出start和end元素并清除状态

整个计划可能如下所示:

val stream[Event] = ...
val startEnd[(Event, Event)] = stream
  .keyBy(yourKey)
  .flatMap(yourStatefulFunction)

第一个事件和最后一个事件之间没有直接的区别,我需要使用时间圈(时间是动态因素)来计算它。有些消息的键x有t时间,有些消息的键Y有t2时间延迟。正如你所建议的,我正在寻找@