我有一个键控流:
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
这会导致不必要的成本:运行时新的子任务,再加上重新处理数据?
1条答案
按热度按时间5f0d552i1#
你可以使用
RichMapFunction
或者RichFlatmapFunction
并且可以访问flink的管理状态机制。你将失去什么,相比ProcessFunction
,是计时器。请看这里的示例。