清除Flink作业的ProcessWindowFunction中使用的状态



我在工作中使用ProcessWindowFunction并保留StateValue。我的目标是将该值保持在该状态超过1个窗口,这意味着该状态不会在每个窗口结束时被清除。我有两个问题:

  1. 如何清除状态?有没有设置触发器并使用它来清除状态的选项?(在ProcessFunction中使用状态时,即使没有新事件,我也可以设置触发器来进行此清除(
  2. 有没有一种方法可以构建一个单元测试来检查我的ProcessWindowFunction实现的行为(特别是状态(
  1. ProcessWindowFunction有一个clear方法,当您创建的任何每窗口状态都应该被清除时,就会调用该方法。如果您使用的是windowState(docs(,则需要实现此方法。我不确定是否有办法清除globalState中过时的密钥。

  2. Flink本身有很多测试,在您自己的应用程序中重用OneInputStreamOperatorTestHarness和TwoIntputStreamOperatorTestHarness是合理的,但它们不是公共API的一部分,可能随时更改。此外,内部窗口测试似乎没有使用这些工具——如果我为此编写测试,我在Flink源代码中没有看到任何我想利用的东西。

相关内容

  • 没有找到相关文章

最新更新