2017-08-07 38 views
1

我有一個密鑰流:阿帕奇弗林克了:KeyedStream值地圖功能,又不失鍵狀態

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)的情況下運行狀態完全功能,這會導致不必要的成本:運行時產生一個新的子任務,並重新清理我的數據?

回答

2

您可以使用RichMapFunctionRichFlatmapFunction,並有機會獲得弗林克的管理狀態的機制。與ProcessFunction相比,你會錯過的是定時器。

請參閱示例here

+0

還有一個問題:在多個'keyBy'的情況下,是否有優化的機會?在同一個插槽中分組多個進程並刪除混排開銷的一種方法? –

相關問題