2016-08-25 6 views
2

非常に多数の鍵と制限されたクラスタサイズがあります。 私はmapWithStateを使って私の状態を更新しています。新しいデータが来ると、キーの数が増えます。私がスパークUIのストレージタブに行ったときMapWithStateRDDは常にメモリに保存されます。mapWithStateで状態を維持するためにメモリが不足した場合どうなりますか

ソースコードの行109にあるMapWithStateDstream.Scala は、ストレージレベルがMEMORY_ONLYに設定されているときに、メソッドpersistが呼び出されます。 キーが多すぎるとアプリケーションがクラッシュすることはありますか?私は、スパークUI MapWithStateRDDのストレージタブに行ってきました

答えて

2

は常に

スパークは、それが内部状態を保存すると呼ばれるHashMapOpenHashMapBasedStateMapの独自の実装だ使用していますメモリに保存されている あります。これは、値がメモリに保存され、永続ストアには格納されないことを意味します()。

キーが多すぎるとアプリケーションがクラッシュすることはありますか?

これは、クラスタが状態をメモリ内を永続化されているので、同時にすべてのキーを格納するのに十分なリソースを持っている必要があることを意味します。限られている場合は、保存する状態を最適化して、すべての状態に収まるようにする必要があります。そうでない場合は、外部の永続ストレージを使用することを検討してください。

関連する問題