首页 > 解决方案 > 在 Trigger 中访问 globalState

问题描述

在 Flink 窗口中,我可以在自己定义的触发器中访问 globalState 吗?我已经尝试过 triggerContext.getPartitionedState,但它只能获取每个窗口的状态。

标签: triggerswindowstateapache-flink

解决方案


a 唯一可用的状态Trigger是通过 使用的每个键、每个窗口的状态triggerContext.getPartitionedState。触发器没有全局状态。

有一些可能的解决方法。可以想象,您可以Trigger在每个事件上触发 a,然后在 a 中使用全局状态ProcessWindowFunction来决定要做什么(这可能是一个非常糟糕的主意)。

在大多数情况下,很难从窗口 API 获得所需的内容,最好使用ProcessFunction. 如果不清楚如何以这种方式解决您的问题,请提出另一个问题,提供有关您的用例的更多详细信息。


推荐阅读