我有一份flink工作,需要在1小时内重复删除收到的记录。重复数据消除后,我需要收集所有这些重复数据消除的文档,并进行一些聚合,如计数,然后生成目标主题。
现在,由于我只需要收集那些重复数据消除的文档,所以可能不需要等待1小时。我如何避免仅为收集这些文档而设置1个小时的窗口,但一旦收集到这些文档,就继续进行聚合。
因此,资源会占用内存,检查点大小也在增加,这是我想要避免的。
水印策略:
WatermarkStrategy<PlImaGuidInterimMessageVO> watermarkStrategy = WatermarkStrategy
.<PlImaGuidInterimMessageVO>forBoundedOutOfOrderness(Duration.ofMillis(maxOutOfOrderness))
.withTimestampAssigner((event, timestamp) -> event.getEventTimeStamp());
如有任何建议,将不胜感激。
除非您正在执行未显示的异常操作,否则第二层窗口将在收到第一层的结果后立即关闭。换言之,一旦完成重复数据消除,您就应该得到最终结果。
然而,滚动窗口并不是实现重复数据消除的理想技术。问题是窗口与时代对齐。这意味着时间戳为1:59、重复时间为2:01的事件不会被重复数据消除。
在我看来,最好使用带有计时器的简单KeyedProcessFunction。为流设置关键帧,以便只有重复项具有相同的关键帧,并在ValueState中使用布尔值来记住最近是否看到了给定的关键帧,以便筛选出后续的外观。使用计时器清除状态。
会话窗口是实现重复数据消除的另一种很好的方法,尽管语义也有所不同。
我正试图使用Flink以流媒体的方式使用消息队列中的有界数据。数据格式如下: 可以使用事件ID确定消息的开始和结束。我想接收此类批次并将最新的(通过覆盖)批次存储在磁盘或内存中。我可以编写自定义窗口触发器来使用开始和结束标志提取事件,如下所示: 但是如何保持最新窗口的输出。一种方法是使用ProcessAllWindowFunction接收所有事件并手动将其写入磁盘,但这感觉像是一种黑客行为。我还研
主要内容:1.窗口概述,2.窗口分类,3.细分,4.窗口Api,5.窗口分配器 Window Assigners,6.窗口函数,7.TopN 实例1.窗口概述 Flink 是一种流式计算引擎,主要是来处理无界数据流的,数据源源不断、无穷无尽。想要更加方便高效地处理无界流,一种方式就是将无限数据切割成有限的“数据块”进行处理,这就是所谓的“窗口”(Window)。 在 Flink 中, 窗口就是用来处理无界流的核心。我们很容易把窗口想象成一个固定位置的“框”,数据源源不断地流过来,到某个时间点窗口
一、窗口概念 在大多数场景下,我们需要统计的数据流都是无界的,因此我们无法等待整个数据流终止后才进行统计。通常情况下,我们只需要对某个时间范围或者数量范围内的数据进行统计分析:如每隔五分钟统计一次过去一小时内所有商品的点击量;或者每发生1000次点击后,都去统计一下每个商品点击率的占比。在 Flink 中,我们使用窗口 (Window) 来实现这类功能。按照统计维度的不同,Flink 中的窗口可以
我尝试使用flink sql窗口API:https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/table_api.html#group-windows
这是一个关于flink流的两个问题的主题,基于我自己做的实验,我需要一些澄清。问题是: