2016-06-02 6 views
1

ウィンドウに2つのキー付きストリームを結合する必要があります。しかし、私は最初に2つのストリームを減らしてから、同じウィンドウ内の集約にすべての結合を適用する必要があります。ウィンドウの縮小と結合

私はFLINK APIを見ていくつかの時間を費やしていると私は、このようなAN適用機能が中に存在することを発見WindowedStream

公共SingleOutputStreamOperator

しかし、私は見つけることができないのです(ReduceFunction reduceFunction、窓関数機能)を適用JoinedStreamにおける同様の機能 質問: これはFlinkにとって便利な機能ですか? 私が今使用できる回避策はありますか?

答えて

0

処理時間のセマンティクスを使用している場合は、ウィンドウ集約を各入力ストリームに個別に適用し、結果を結合に供給することができます(もちろん、集約と結合で同じウィンドウ定義を使用する必要があります)。

このような何か:

WindowAssigner w = ... 
reducedStream1 = stream1.keyBy(...).window(w).apply(...); 
reducedStream2 = stream2.keyBy(...).window(w).apply(...); 
reducedStream1.join(reducedStream2) 
       .where(...).equalTo(...) 
       .window(w).apply(...); 

処理時間のために、あなたが使用してカスタムオペレータを所有記述する必要があります:

stream1.coGroup(stream2) 
     .where(...).equalTo(...) 
     .window(...).apply(CoGroupFnction); 
+0

私はイベントの時間を使用していると私はコグループを使用してそれを実装することになりましたあなたが提案したのとまったく同じです。ありがとう。 –

関連する問題