2016-05-25 3 views
2

処理データのパターンは、いくつかの情報Aで充実したレコードストリームを持つことです。レコードはいくつかのIDによって断片化されます。この情報Aは、現在のレコード、前の計算の結果、および大きなルックアップテーブルに依存します。ルックアップテーブルは頻繁に変更されず、変更は軽微です。私は、ステートフルな計算を行うためにmapWithState/flatMapWithStateを使用できることを知っています。しかし、私はルックアップテーブルをどのように扱うべきですか?慣用的なやり方は、状態(Aのような)として扱うことですが、ルックアップテーブルのサイズはおそらくパフォーマンス/メモリにとって恐ろしいです(例えばスナップショット時)Apache Flinkでめったに更新されない大きなルックアップテーブルを処理する方法

私は現在共有リソースを保護することを考えていますリーダ/ライタロックによって。このようなパターンを扱う良い方法はありますか?

答えて

2

今のところ唯一可能な方法は、あなたが言及したように、状態を使用することです。私たちはそれをやり遂げる代わりの方法に取り組んでいます。ここに私たちが持っているアイデアのいくつかがあります:https://docs.google.com/document/d/1hIgxi2Zchww_5fWUHLoYiXwSBXjv-M5eOv-MKQYN3m4/edit?usp=sharing

+0

私は必要なもののようです。この側の入力はマシンインスタンスごとに1回だけコピーされますか(マシンに80個のタスクスロットがあり、そのデータを80回コピーしないとします)?したがって、現在、例えば、演算子内で大量のHashMapが複数回コピーされることなく(ストリーミングAPI内) – gvd

+0

はい、これを考慮する必要があります。 – aljoscha

関連する問題