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

如何处理flink流中的未来事件?

方宏富
2023-03-14

我们正在努力计算 1 分钟翻滚时间窗口内不同类型的事件的最大并发计数。

这些事件就像传感器数据,这些数据是从我们的桌面代理每分钟收集的,然而,一些代理得到了一个错误的时间戳,比如说,它甚至比现在晚了几个小时。

所以,我的问题是如何处理/删除这些事件,目前我只是应用过滤器(s =

我的第一个问题是,如果我不这样做,我怀疑这个坏的“未来”事件会触发窗口计算,即使是那些不完整的数据窗口

第二个问题是,我们有没有更好的方法来防止这种情况发生?

谢谢

共有1个答案

仰雅昶
2023-03-14

这是一个有趣的用例。

所以首先是一些背景,然后是一些解决方案:闪烁中的Windows不是基于时间戳而是基于水印。两者之间有密切的联系,在窗口触发时通常可以对它们进行相同的处理,但在这种情况下,明确的分离很重要。所以是的,如果您使用严格绑定到时间戳的水印生成器,您的怀疑可能是有效的。

考虑到这一点,你有几个选择:

    < li >过滤无效事件(< code >时间戳

我认为前两个选项是直截了当的,我个人会选择第二个(修复数据总是好的)。让我们关注水印生成器。

基本上没有限制你如何生成水印-你可以依靠你的想象力。以下是一些想法:

  • 只有提前水印,当您看到水印大于当前水印的X事件时。
  • 使用一些低通滤波器=慢速移动平均线。
  • 忽略带有时间戳的事件

我很高兴听到你选择了哪条路,我可以帮助你走得更远。

 类似资料:
  • null 其中lambda1、2等是条件检查函数,例如 但不知什么原因对我不起作用,也许还有其他方法?正如我从文档(https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/side_output.html)中了解到的,OutputTag用于创建标记为tag的附加消息。还是我错了?

  • 我正在运行一个流式flink作业,它消耗来自kafka的流式数据,在flink映射函数中对数据进行一些处理,并将数据写入Azure数据湖和弹性搜索。对于map函数,我使用了1的并行性,因为我需要在作为全局变量维护的数据列表上逐个处理传入的数据。现在,当我运行该作业时,当flink开始从kafka获取流数据时,它的背压在map函数中变得很高。有什么设置或配置我可以做以避免背压在闪烁?

  • 我想在一个操作符中接收和处理三个流。例如,Storm中实现的代码如下: <代码>生成器。setBolt(“C\u螺栓”,C\u螺栓(),parallelism\u提示)。字段分组(“A\u bolt”,“TRAINING”,新字段(“word”))。字段分组(“B\U螺栓”,“分析”,新字段(“word”))。所有分组(“A\U螺栓”、“总和”) 在Flink中,实现了和的处理: 但我不知道如何添

  • 我有一个flink cep代码,可以从套接字读取数据并检测模式。假设模式(单词)为“警报”。如果单词alert出现五次或五次以上,则应创建一个警报。但我得到了一个输入不匹配错误。Flink版本为1.3.0。提前谢谢!!

  • 为了测试流处理和Flink,我给自己出了一个看似简单的问题。我的数据流由粒子的和坐标以及记录位置的时间组成。我的目标是用特定粒子的速度来注释这个数据。所以小溪看起来像这样。 现在无法保证事件会按顺序到达,即可能会在之前到达,即。 为了简单起见,可以假设任何迟来的数据将在早数据的内到达。 我承认,我是流处理和闪烁的新手,所以这可能是一个愚蠢的问题,提出一个明显的答案,但我目前被难倒了,如何去实现我的