当前位置: 首页 > 知识库问答 >
问题:

Apache Flink:如何处理延迟事件?

昌琪
2023-03-14

共有1个答案

顾嘉德
2023-03-14

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

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

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

 类似资料:
  • 我需要延迟处理一些事件。 我有三件事(发表在Kafka上): A(id: 1, retry At: now) B(id: 2, retry At: 10分钟后) C(id: 3, retry At: now) 我需要立即处理记录A和C,而记录B需要在十分钟后处理。这在Apache Flink中实现可行吗? 到目前为止,无论我研究了什么,“触发器”似乎都有助于在Flink中实现它,但还没有能够正确实

  • 问题内容: 这是我的情况: 我有一个包含用户列表的页面。我通过Web界面创建一个新用户,并将其保存到服务器。服务器在elasticsearch中为文档建立索引并成功返回。然后,我被重定向到不包含新用户的列表页面,因为它可能需要1秒钟的时间才能使文档在Elasticsearch中可供搜索 elasticsearch中的近实时搜索。 elasticsearch指南说您可以手动刷新索引,但说在生产中不要

  • 如何在Vertx中处理延迟作业列表(实际上是数百个HTTP GET请求,到禁止快速请求主机的有限API)?现在,我正在使用此代码,它被阻止,因为Vertx一次启动所有请求。希望在每个请求之间有5秒的延迟来处理每个请求。

  • 我想将来自AWS Kinesis流的消息的处理延迟一个小时。我已将KCL消费者配置为每四分钟读取一批记录,检查每条记录的时间戳,如果任何记录不到一个小时,则停止处理该批次,无需检查点。我希望同一个消费者实例每四分钟重读一次相同的消息,直到整个批次足够旧可以处理,然后检查点消费者。但是,在实践中,消费者只读取一次消息,这意味着它们被忽略,并且在准备好处理时永远不会再次读取。有没有办法将消费者配置为每

  • 在我看来,Flink以三种方式处理后期事件: 窗口过期时删除延迟事件(默认)。 通过使用“允许延迟”机制包含延迟事件来更新窗口。 使用“侧输出”机制将延迟事件重定向到另一个DataStream。 让我们假设我有一个事件时间作业,它使用来自Kafka的数据,并每5分钟处理一个窗口。现在,假设我将延迟事件重定向到另一个数据流中。 这个新的数据流是独立的吗 谢谢大家!

  • 我们在RHEL 7.0 VM上部署了一个Java/spring/Tomcat应用程序,它使用AlejandRorivera/Embedded-RabbitMQ,一旦部署了war,它就启动Rabbitmq服务器,并连接到它。我们有多个队列用来处理和过滤事件。 流程如下所示: 我们接收到的事件->发布事件队列->侦听器类筛选事件->发布到另一个队列进行处理->我们发布到另一个队列进行日志记录。 问题是