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

Apache Flink:如何处理水印背后的所有事件?

吴安和
2023-03-14

我想使用Flink的事件时间戳,并计划实现一个简单的emitWatermark,即系统。currentTimeInMillis-10秒。我的理解是,翻滚窗口将触发start\u time window\u间隔10秒。因此,如果事件晚于水印到达,则会删除这些事件。

有没有办法将Flink丢弃的所有事件写入S3这样的接收器?

共有1个答案

宋奇希
2023-03-14

它应该可以通过侧面输出实现。sideOutputLateData操作员的文档说明如下:

将延迟到达的数据发送到由给定{@link OutputTag}标识的侧输出。在水印通过窗口末尾加上使用{@link#allowedLateness(Time)}设置的允许延迟后,数据被视为延迟。

因此,您可以通过输出标记获取最新的数据流,并将其接收到s3。

 类似资料:
  • 我试图使用process函数对一组事件进行处理。我正在使用事件时间和键控流。我面临的问题是,水印值始终为9223372036854725808。我已经对print语句进行了调试,它显示如下: 时间戳------1583128014000提取时间戳1583128014000当前水印------9223372036854775808 时间戳------1583128048000提取时间戳1583128

  • 这个问题似乎不是关于特定的编程问题、软件算法或主要由程序员使用的软件工具。如果您认为这个问题在另一个Stack Exchange网站上是主题,您可以留下评论来解释这个问题在哪里可以得到回答。 我们构建了一个定制的Kafka Connect sink,它反过来调用一个远程REST API。我如何将背压传播到Kafka Connect基础设施,以便在远程系统比内部使用者向put()传递消息慢的情况下,

  • 我读到了四个Kinesis流的数据。每个流中的数据都是不同的数据类型。读取所有四个流后,我分配时间戳和水印,并聚合来自每个流的数据。四个聚合的结果都是使用相同的泛型对象输出的。我想合并四个流的结果,这样我就可以将合并后的流发送到一个ProcessFunction。这基本上允许我像使用CoProcessFunction一样使用ProcessFunction,但我可以处理来自两个以上流的数据(在本例中

  • 在键控流上,我希望在新事件到达时,立即为每个新传入事件计算一次窗口函数,同时以迭代器的形式为它提供过去30天内该键的所有早期事件的上下文。 预期的行为类似于滑动窗口,长度为30天,滑动时间为1纳秒,每个传入事件只计算一次窗口函数。 我看不到如何在内置的翻滚/滑动/会话窗口(带/不带触发器/驱逐器等)上映射此行为。 有人能帮忙吗?或者这需要编写自己的窗口赋值器或自己的键控状态处理吗?

  • 有人能正确解释事件时间戳和水印吗。我从文件中理解了,但不太清楚。一个真实的例子或外行的定义会有所帮助。此外,如果可能,请给出一个示例(以及一些可以解释它的代码片段)。提前感谢

  • null 此窗口具有一个允许延迟为一分钟的BoundedOutoFordernesTimeStampExtractor。 水印:据我的理解,Flink和Spark结构化流中的水印定义为(max-event-timestamp-seen-so-far-alloged-lateness)。事件时间戳小于或等于此水印的任何事件都将被丢弃并在结果计算中忽略。 在此场景中,几个事件到达Flink运算符时具有