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

为什么我的闪烁窗口触发时,我已设置水印是一个高的数字?

简宏义
2023-03-14

我希望windows只有在等待水印的最大延迟所定义的最大可能时间后才会触发。

.assignTimestampsAndWatermarks(WatermarkStrategy.forBoundedAutoforderness(Duration.of Mills(10000000))。withTimestampAssigner((订单,时间戳)-

在本例中,为什么窗口会在任何有意义的时间内触发?窗口非常大,我们等待记录的时间非常长。当我运行我的示例时,窗口仍然会在不到一分钟的时间内被触发。为什么会这样?

共有1个答案

娄森
2023-03-14

原来水印是在源耗尽后生成的(在本例中是来自读取文件)。所以最大水印被发出(9223372036854775807)。触发器发生在:window.maxTimestamp()

看https://stackoverflow.com/a/51554273/1099123

 类似资料:
  • 我有一个flink任务,它使用带事件时间和水印的键控翻滚窗口来聚合数据。 我的问题是,flink是否保持着他已经关闭的窗口的状态?否则,我没有其他解释为什么属于以前从未打开过的窗口的事件会打开一个窗口而不会立即删除它。 假设我们的窗口是1小时,禁止自动关闭是10分钟 让我们举个例子: event1=("2022-01-01T08:25:00Z")= event2=("2022-01-01T09:2

  • 从本文档中,我可以阅读以下内容: 默认情况下,记录将使用Kafka ConsumerRecord中嵌入的时间戳作为事件时间。您可以定义自己的水印策略,从记录本身提取事件时间,并向下游发出水印: 本文档详细描述了如何定义水印策略。 如果用户不提供可选的水印策略,将使用什么水印策略? 我这样问是因为我发现源代码中的默认值是空的。 我们正在运行Flink 1.11。

  • 有人能帮我理解一下在flink中的窗口(会话)是什么时候和如何发生的吗?或者样品是如何加工的? 例如:假设定义的时间窗口是30秒,如果一个事件在t时间到达,另一个事件在t+30,那么这两个事件都将被处理,但是在t+31到达的事件将被忽略。 如果我说的不对,请纠正。 上面的问题是:如果一个事件在t时间到达,而另一个事件在t+3时间到达,是否还会等待整个30秒来汇总并最终确定结果? DTO: ====

  • 我很难让apache beam管道触发基于事件时间的触发器,但似乎能够随着处理时间触发窗口触发。 我的管道相当基本: > 我提取二级时间戳 我打开数据窗口进行处理 我按秒对数据进行分组,以便以后按秒对流数据进行分类。 我最终在分类的秒数上使用滑动窗口,有条件地每秒向pubsub发出两条消息中的一条。 我的问题似乎在步骤3中。 我试图在第3阶段使用与第5阶段相同的窗口策略,在分类秒数上运行滑动平均计

  • 我不是流口水的专家。不过,通过实验,我对它有了一些了解。我无法欣赏,为什么我需要它。 我的典型应用程序是业务Web应用程序。是的,他们确实有一些规则。但是,这些都是使用数据库表、SQL查询和中的良好UI来实现的,以便业务用户修改规则。规则不是武断的,它们在投入生产之前是经过仔细考虑的。 我的业务用户永远不会使用(Drools)脚本语言来修改任何内容。更不用说修改规则了。他们非常乐意使用UI屏幕来修

  • 我需要根据一个键连接两个事件源。事件之间的间隔最长可达1年(即具有id1的event1可能在今天到达,而来自第二个事件源的具有id1的相应event2可能在一年后到达)。假设我只想输出连接的事件输出。 我正在探索在RocksDB后端使用Flink的选项(我遇到了表API,它们似乎适合我的用例)。我找不到做这种长窗口连接的引用体系结构。我希望系统一天能处理大约2亿个事件。 关于处理这种长窗口连接的任