1

まず架空のユースケース。tuples のストリームがあるとしましょう(user_id, time_stamp, login_ip)。各ユーザーの最終ログイン IP を 5 秒の粒度で維持したいと考えています。

Spark ストリーミングを使用すると、updateStateByKeyメソッドを使用してこのマップを更新できます。問題は、データのストリームが継続的に発生するにつれて、より多くのデータが表示されるため、各時間間隔の RDD がますます大きくなることuser_idsです。しばらくすると、マップが非常に大きくなり、維持に時間がかかり、結果のリアルタイム配信が実現できなくなります。

これは、問題を示すために思いついた単純な例にすぎないことに注意してください。実際の問題はより複雑になる可能性があり、リアルタイムで配信する必要があります。

この問題を解決する方法についてのアイデアはありますか (Spark だけでなく、他のソリューションもすべて適切です)。

4

1 に答える 1

2

を完全に更新していませんMap。あなたが与える機能は、1 つのキーに関連付けられた状態を更新するだけで、あとは Spark が行います。特に、キーと状態のペアのマップのようなものを維持していRDDます。実際には、それらの一連のDStream. したがって、状態の保存と更新は、他のすべてと同様に分散されます。更新が十分に速くない場合は、ワーカーを追加してスケールアップできます。

于 2014-07-07T21:12:02.093 に答える