Apache flink 窗口按时间属性和推送到流

Apache flink 窗口按时间属性和推送到流,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我们有一个输入流,其中事件有一个时间属性(不是处理时间或事件时间),根据该属性,它们必须以1分钟为一组,并在分钟到达时推入流(动觉/卡夫卡接收器)。我们认为我们可以使用windows来实现这一点。我有这些疑问: 如果我们按日期时间值输入到分钟,键值会占用内存吗?我的意思是在会议记录通过后,是否有必要删除密钥?或者它们是抽象的,实际上并没有占用空间 由于我必须在处理结束时将事件推送到接收器,我们如何处理reduce/agg函数 三,。在flink应用程序关闭的情况下,当我们重新启动它时,如何触发当

我们有一个输入流,其中事件有一个时间属性(不是处理时间或事件时间),根据该属性,它们必须以1分钟为一组,并在分钟到达时推入流(动觉/卡夫卡接收器)。我们认为我们可以使用windows来实现这一点。我有这些疑问:

  • 如果我们按日期时间值输入到分钟,键值会占用内存吗?我的意思是在会议记录通过后,是否有必要删除密钥?或者它们是抽象的,实际上并没有占用空间

  • 由于我必须在处理结束时将事件推送到接收器,我们如何处理reduce/agg函数

  • 三,。在flink应用程序关闭的情况下,当我们重新启动它时,如何触发当时应该触发的窗口?得到了答案:计时器被检查并被触发 下面的启动

  • 我们是否完全没有抓住要点,有没有更好的方法

  • 编辑:添加上下文:我们需要基于某些业务逻辑(内部验证)重试事件。由于我们正在使用的操作符(异步IO)不支持退休,并且剩下的唯一选项是通过编写自定义代码来使用Futures,因此我们决定将其发送回应用程序的输入流。重试事件的时间再次取决于业务逻辑(在运行时计算)。因此,为了实现这一点,我们认为我们可以根据日期时间值收集事件,直到计算值的分钟数,并在时间到达时将它们推送到流中。

    我将参考Java API,但我希望您能理解。可能您可以使用消息中的时间字段,并使用构造函数将其设置为消息时间戳。然后在消费者端,您需要根据消息时间戳读取数据。基本上,你需要寻找时间的偏移量,阅读到下一分钟。提示-我怀疑您正在这些分钟窗口上进行一些聚合。你能相应地更新你的问题吗?你能澄清你所说的不是事件时间的时间属性是什么意思吗?@ArvidHeise,我添加了一些上下文。如果你需要更多,请告诉我info@DavidAnderson,则时间属性在运行时计算。我添加了一些上下文。如果你需要更多信息,请告诉我。