flink作业的processwindowfunction中使用的清除状态

s3fp2yjn  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(894)

我在工作中使用processwindowfunction并保留statevalue。我的目标是将值保持在状态中超过一个窗口,这意味着状态不会在每个窗口结束时被清除。我有两个问题:
我怎样才能清除这个州?有没有设置触发器并用它来清除状态的选项(在processfunction中使用状态时,即使没有新事件,我也可以设置触发器来进行清除)
有没有一种方法可以构建一个单元测试来检查MyProcessWindowFunction实现的行为(以及具体的状态)?

ax6ht2ek

ax6ht2ek1#

processwindowfunction有一个clear方法,当您创建的任何每窗口状态都应该被清除时,会调用该方法。如果您使用的是windowstate(docs),则需要实现此方法。我不确定是否有办法清除globalstate中的过期密钥。
flink本身有很多测试,在您自己的应用程序中重用oneinputstreamoperatortestharness和TwoInputStreamOperatorTestHarness是合理的,但是这些不是公共api的一部分,并且可能随时更改。此外,内部窗口测试似乎没有使用这些工具——而且我在flink源代码中没有看到任何我在为此编写测试时想要利用的东西。

相关问题