web-dev-qa-db-ja.com

サメ/スパークにキャッシュをクリアさせる方法は?

シャーククエリを実行すると、メモリがメインメモリに蓄積されますこれが私の一番上のコマンド結果です。


メモリ:合計74237344k、使用済み70080492k、空き4156852k、399544kバッファスワップ:合計4194288k、使用済み480k、空き4193808k、キャッシュ65965904k


shark、spark、hadoopプロセスをkill/stopしても変更されません。現在、キャッシュをクリアする唯一の方法は、マシンを再起動することです。

誰かが以前にこの問題に直面しましたか?設定の問題か、spark/sharkの既知の問題ですか?

22
venkat

キャッシュされたデータをすべて削除するには:

sqlContext.clearCache()

ソース: https://spark.Apache.org/docs/2.0.1/api/Java/org/Apache/spark/sql/SQLContext.html

26

RDDを永続化するためにcache()メソッドを使用していますか?

cache()persist()を呼び出すだけなので、RDDのキャッシュを削除するには、unpersist()を呼び出します。

30
herman

これは奇妙です。尋ねられた質問は答えをすることは何もありません。投稿されたキャッシュOPはオペレーティングシステムが所有し、sparkとは関係ありません。これはOSの最適化であり、その特定のキャッシュについて心配する必要はありません。

また、sparkキャッシュは通常メモリ内にありますが、OSのキャッシュセクションではなくRSSセクションにあります。

3
Shawn

私はこれに従って、それは私のためにうまくいった::

for ((k,v) <- sc.getPersistentRDDs) {
   v.unpersist()
}

sc.getPersistentRDDsは、キャッシュされたデータの詳細を格納するマップです。

scala> sc.getPersistentRDDs

res48:scala.collection.Map [Int、org.Apache.spark.rdd.RDD [_]] = Map()

2
Sankar