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

在Apache Flink中的多个窗口运算符中处理过去的数据?

郗学
2023-03-14

上下文:我正在研究的项目处理定期(1分钟)生成的时间戳文件,并将其实时摄取到一系列级联窗口操作符中。文件的时间戳指示事件时间,因此我不需要依赖文件创建时间。每个窗口的处理结果被发送到一个接收器,该接收器将数据存储在多个表中。

input -> 1 min -> 5 min -> 15 min -> ...
          \-> SQL  \-> SQL  \-> SQL

我正在尝试想出一个解决方案来处理实时进程可能出现的停机时间。输入文件是独立生成的,因此在Flink解决方案严重停机的情况下,我想摄取和处理丢失的文件,就好像它们是由同一进程摄取的一样。

我的第一个想法是配置同一流程的操作模式,该模式仅读取错过的文件,并具有允许的延迟,涵盖要处理的最早文件。但是,一旦文件被处理,就可以保证不会再摄入延迟文件,因此我不一定需要在整个过程中保持最早的窗口打开,特别是因为可能有很多文件要以这种方式处理。是否可以对关闭窗口做些什么,即使设置了允许的延迟,或者我应该考虑将整个事情作为批处理操作和按时间戳分区来阅读?

共有1个答案

冯胤
2023-03-14

由于您使用事件时间处理按顺序接收输入文件,因此我不明白为什么会出现问题。Flink的工作恢复后,似乎应该能够从中断的地方恢复过来。

如果我误解了这种情况,并且您有时需要从过去的某个时间点返回并处理(或重新处理)一个文件,一种方法是部署同一作业的另一个实例,配置为仅摄取需要(重新)摄取的文件。应该没有任何必要将其重写为批处理作业——大多数流式作业都可以在有界的输入上运行。并且通过事件时间处理,这个回填作业将产生与(接近)实时运行相同的结果。

 类似资料:
  • 我目前正在研究一种数据可视化技术,它从电影中获取信息,实时播放并同时创建。为此,我想有两个独立的草图窗口。一个窗口应显示实时播放的电影,另一个窗口应显示正在进行的可视化。 我似乎不知道如何轻松地添加另一个草图窗口,并尝试了一些在处理3中不再工作的示例。 然后我偶然发现了这个例子:https://gist.github.com/atduskgreg/666e46c8408e2a33b09a 尽管我可

  • 问题内容: 我想通过在“处理”中仅使用一个草图来创建两个窗口。 我想做的是,如果我在一个窗口中单击一个按钮,则某些图像会出现在另一个窗口中。 我搜索了Google并找到了一些示例。实际上,我在此“堆栈溢出网络”中发现了相同的问题。这里是链接。 在处理中 http://forum.processing.org/one/topic/multiple- windows-2-4-2011.html中 创建

  • 问题内容: 如何在“处理”中创建单个草图的多个窗口? 实际上我想在一个窗口中检测并跟踪特定颜色(通过网络摄像头),然后将检测到的坐标显示为另一个窗口中的点,直到现在我仍可以在检测到该颜色的同一个窗口中显示这些点。我想将其拆分为两个不同的窗口。 问题答案: 您需要创建一个新框架和一个新的PApplet …这是一个示例草图:

  • 如何在加工过程中创建单个草图的多个窗口? 实际上,我想在一个窗口中检测并跟踪特定的颜色(通过网络摄像头),并在另一个窗口中将检测到的坐标显示为一个点。到目前为止,我能够在同一个窗口中显示检测到它的点。但我想把它分成两个不同的窗口。

  • 我想在多个窗口之间切换,并在每个窗口上执行操作。窗口类型类似于父窗口>>子窗口>>大子窗口>>大子窗口。我有一个处理多个窗口的通用代码,但我不能理解如何调用该函数。我需要帮助。 你能解释一下我应该如何调用这个下面的函数,以及firstWindow和SecondWindow中的参数是什么吗。 下面是代码。

  • 我有以下代码来计算socketTextStream中的单词。累积字数和时间窗字数都是必需的。该程序存在累积计数始终与窗口计数相同的问题。为什么会出现这个问题?根据加窗计数计算累积计数的正确方法是什么?