繁体   English   中英

访问动态变化的 Apache Flink 中的每个键状态存储

[英]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_EVENTSkey映射到它的MIN_EVENTS参数。 我知道我可以使用可用于所有触发器的TriggerContext ctx对象访问状态存储。

如何从 CountTrigger() 类外部初始化此状态存储? 我一直无法找到这样做的例子。

您可以根据发送到 Trigger 类的构造函数的参数来初始化状态。 但是您不能从该类之外访问该状态。

如果您需要更大的灵活性,我建议您使用进程函数而不是窗口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM