Spark 1.3.0 with python api。を使用しています。巨大なデータフレームを変換している間、実行を高速化するために多くのDFをキャッシュします。
df1.cache()
df2.cache()
特定のデータフレームの使用が終了し、不要になったら、メモリからDFをドロップ(またはキャッシュ解除??)
例えば、 df1
はコード全体で使用され、df2
は、少数の変換に使用され、その後は必要ありません。強制的にドロップしたいdf2
より多くのメモリ空間を解放します。
以下を実行してください:
df1.unpersist()
df2.unpersist()
Sparkは各ノードのキャッシュ使用量を自動的に監視し、Least-Recently-Used(LRU)方式で古いデータパーティションを削除します。 RDDがキャッシュから落ちるのを待つのではなく、手動で削除する場合は、RDD.unpersist()メソッドを使用します。
データフレームSQL操作のテーブルとして登録されているの場合
df.createGlobalTempView(tableName) // or some other way as per spark verision
その後、次のコマンドを使用してキャッシュをドロップできます。off-course sparkも自動的に行います
ここでspark
はSparkSession
のオブジェクトです
キャッシュから特定のテーブル/ dfを削除します
spark.catalog.uncacheTable(tableName)
キャッシュからすべてのテーブル/ dfを削除します
spark.catalog.clearCache()
キャッシュから特定のテーブル/ dfを削除します
sqlContext.uncacheTable(tableName)
キャッシュからすべてのテーブル/ dfを削除します
sqlContext.clearCache()