web-dev-qa-db-ja.com

ドロップsparkキャッシュからのデータフレーム

Spark 1.3.0 with python api。を使用しています。巨大なデータフレームを変換している間、実行を高速化するために多くのDFをキャッシュします。

df1.cache()
df2.cache()

特定のデータフレームの使用が終了し、不要になったら、メモリからDFをドロップ(またはキャッシュ解除??)

例えば、 df1はコード全体で使用され、df2は、少数の変換に使用され、その後は必要ありません。強制的にドロップしたいdf2より多くのメモリ空間を解放します。

22
ankit patel

以下を実行してください:

df1.unpersist()
df2.unpersist()

Sparkは各ノードのキャッシュ使用量を自動的に監視し、Least-Recently-Used(LRU)方式で古いデータパーティションを削除します。 RDDがキャッシュから落ちるのを待つのではなく、手動で削除する場合は、RDD.unpersist()メソッドを使用します。

39
Alexander

データフレームSQL操作のテーブルとして登録されているの場合

df.createGlobalTempView(tableName) // or some other way as per spark verision

その後、次のコマンドを使用してキャッシュをドロップできます。off-course sparkも自動的に行います

Spark> = 2.x

ここでsparkSparkSessionのオブジェクトです

  • キャッシュから特定のテーブル/ dfを削除します

    spark.catalog.uncacheTable(tableName)
    
  • キャッシュからすべてのテーブル/ dfを削除します

    spark.catalog.clearCache()
    

Spark <= 1.6.x

  • キャッシュから特定のテーブル/ dfを削除します

    sqlContext.uncacheTable(tableName)
    
  • キャッシュからすべてのテーブル/ dfを削除します

    sqlContext.clearCache()
    
18
mrsrinivas