ApacheFlink:将函数Map到keyedstream的值上,而不丢失keyed状态

ao218c7q  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(244)

我有一个键控流:

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 这会导致不必要的成本:运行时新的子任务,再加上重新处理数据?

5f0d552i

5f0d552i1#

你可以使用 RichMapFunction 或者 RichFlatmapFunction 并且可以访问flink的管理状态机制。你将失去什么,相比 ProcessFunction ,是计时器。
请看这里的示例。

相关问题