apache-flink - Apache 弗林克 : How are late events handled?

标签 apache-flink flink-streaming

如果到达的元素违反了水印条件,如何处理该事件?它被扔掉了吗?还是事件仍然向下游传播,过去的窗口函数用迟到的事件重新计算?

文档承认会发生延迟事件,但没有解释如何处理它们。 https://ci.apache.org/projects/flink/flink-docs-release-1.0/apis/streaming/event_time.html

最佳答案

默认情况下,当水印超过窗口末尾时,迟到的元素将被丢弃。但是,Flink 允许为窗口操作符指定最大允许延迟。 Allowed lateness 指定元素在被丢弃之前可以延迟多少时间,其默认值为 0。在水印通过窗口末尾之后但在它通过窗口末尾之前到达的元素加上允许的迟到,仍然被添加到窗口中。根据使用的触发器,延迟但未丢弃的元素可能会导致窗口再次触发。 EventTimeTrigger 就是这种情况。

为了使这项工作正常进行,Flink 会保持窗口的状态,直到它们允许的延迟期满。一旦发生这种情况,Flink 将移除窗口并删除其状态。

您可以在此处查看生命周期。 https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/windows.html#window-lifecycle

关于apache-flink - Apache 弗林克 : How are late events handled?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37844871/

相关文章:

java - Apache Flink - 无法使用 Log4j 创建每小时/每日日志文件

java - 提交Flink作业时出现NoSuchMethodError

apache-kafka - 从卡夫卡消耗确切数量的事件

scala - flatMap 函数中的 Apache Flink Streaming 类型不匹配

apache-flink - 如何确保flink作业已完成执行然后执行一些任务

java - Flink Java API - Pojo 类型到元组数据类型

apache-flink - 当 JSON 模式不同时,如何在 PyFlink SQL 中引用嵌套的 JSON?

apache-flink - Apache 弗林克 : How to query a relational database with the Table API?

scala - Flink错误: Specifying keys via field positions is only valid for tuple data types

apache-flink - 在 Flink Streaming 中按键分组并收集到一个 ListBuffer 中