2016-11-09 1 views
0

をキャッシュ..私は大きなRDDを(それが唯一のメモリ内にある)キャッシュ午前ストリーミングアプリケーション、に取り組んでいます大きな流れ

Dstream.cache() 
Dstream.foreachRDD(..) 
Dstream.foreachRDD(..) 

メモリ.. RDDは再計算したのか、例外を発生させたのですか?

私は内部メモリにのみpresistedされた内部のストリームを使用していますmapwithState機能を使用してステートフルなアプリケーションを開発していますので、私はこの質問をしています。(https://github.com/wliuxad/spark/blob/master/streaming/src/main/scala/org/apache/spark/streaming/dstream/MapWithStateDStream.scala#L109-109

答えて

0

は、私たちが話しているどのRDDに依存します。 MapWithStateDStreamは、OpenHashMapBasedStateMapの内部にデータをキャッシュします。それはディスクにこぼれることはありません。つまり、アプリケーションが正常に動作するためには十分なメモリが必要です。あなたがそれについて考えるとき、どのように国家を退去させることができますか?永続化されているRDDではなく、はアプリケーションロジックの一部です。

が追い出される1つのことは、ソースからキャッシュされたRDDです。前の例から、あなたはKafkaを使用していることがわかります。つまり、キャッシュされたKafkaRDDは、Sparkが一度フィットすると取り除かれることを意味します。

関連する問題