Apache Flink:映射KeyedStream值的功能,而不会丢失keyed状态



我有一个键控流:

KeyedStream<String, Data> keyed = 
env.addSource(...)
.map(new Parser())
.keyBy(i -> i.key)

我想在我的流上运行一个状态完整的进程函数;但是process将返回一个正常的非键化流,这会导致丢失KeyedStream并强制我再次调用keyBy

SingleOutputStreamOperator<Data> unkeyed = keyed.process(new Function)
KeyedStream<String, Data> keyedAgain = keyed.keyBy(i -> i.key)
  • 有没有办法对KeyedStream上的值调用映射函数?

  • 如何在不使用低级 API 的情况下运行状态完整的函数,例如ProcessFunction会导致不必要的成本:运行时的新子任务,以及重新洗牌数据?

您可以使用RichMapFunctionRichFlatmapFunction并访问 Flink 的托管状态机制。与ProcessFunction相比,您将缺少的是计时器。

请参阅此处的示例。

相关内容

  • 没有找到相关文章