我有一个键控流:
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
的值上调用地图函数?
如何在不使用像ProcessFunction
这样导致不必要成本的低级API的情况下运行状态完整函数:运行时新的子任务,再加上我的数据重新加载?
答案 0 :(得分:2)
您可以使用RichMapFunction
或RichFlatmapFunction
,并可以访问Flink的托管状态机制。与ProcessFunction
相比,您将失踪的是计时器。
请参阅示例here。