![](/img/trans.png)
[英]Setting up and accessing Flink Queryable State (NullPointerException)
[英]Accessing per-key state store in Apache Flink that changes dynamically
我有一个带有不同键的消息流。 对于每个键,我想创建一个事件时间会话窗口并仅在以下情况下对其进行一些处理:
MIN_EVENTS
窗口中已累积的事件数(本质上是键控状态) 对于每个键, MIN_EVENTS
是不同的,并且可能会在运行时发生变化。 我很难实现这一点。 特别是,我正在像这样实现这个逻辑:
inputStream.keyBy(key).
window(EventTimeSessionWindow(INACTIVITY_PERIOD).
trigger(new MyCustomCountTrigger()).
apply(new MyProcessFn())
我正在尝试创建一个自定义MyCustomCountTrigger()
,它应该能够从状态存储中读取,例如MapState<String, Integer> stateStore
MIN_EVENTS
将key
映射到它的MIN_EVENTS
参数。 我知道我可以使用可用于所有触发器的TriggerContext ctx
对象访问状态存储。
如何从 CountTrigger() 类外部初始化此状态存储? 我一直无法找到这样做的例子。
您可以根据发送到 Trigger 类的构造函数的参数来初始化状态。 但是您不能从该类之外访问该状态。
如果您需要更大的灵活性,我建议您使用进程函数而不是窗口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.