2017-12-15 24 views
1

私はDataStreamを持っており、その上でウィンドウ集計を計算する必要があります。通常のウィンドウ集約を実行すると、ネットワークIOは非常に高くなります。 ネットワークのIOを減らすためにローカル事前集約を実行したいと思います。Apache Flink:ローカル事前集計でウィンドウを計算するにはどうすればよいですか?

タスクマネージャにローカルに事前集計(つまり、レコードをシャッフルする前)してからフル集約を実行できるかどうかは疑問です。これはFlinkのDataStream APIで可能ですか?

私のコードは次のとおりです。

DataStream<String> dataIn = .... 
dataIn 
    .map().filter().assignTimestampsAndWatermarks() 
    .keyBy().window().fold() 

答えて

0

FLINK(FLINK 1.4.0、2017年12月)の現在のリリースは、内蔵の事前集計のためのサポート機能はありません。しかし、これを次のリリース(1.5.0)に追加する方法については、FLINK-7561を参照してください。

​​に基づいて事前集計操作を実装できます。 ProcessFunctionは、プレアグリゲートを周期的に放出するために、プレアグリゲートをメモリ内の固定サイズのHashMapに保持し、タイマをイベント時間および処理時間を登録することができる。障害が発生した場合のデータ損失を防止するために、状態(すなわち、HashMapの内容)はmanaged operator stateに保持されるべきである。タイマーを設定するときは、ウィンドウ境界を尊重する必要があります。

FoldFunctionは廃止されており、AggregateFunctionに置き換えてください。

+0

get、thank、Fabian – Chen

関連する問題