2016-09-16 8 views
3

私はrdd List<JavaRDD<MyType>>のリストを持っています。リストの各rddはメモリにキャッシュされます。スパーク:リストから削除する前にrdd unpersist

ここでは、リスト項目の1つを削除します。 .remove(index)の前に.unpersist()に電話する必要がありますか?

「はい」の場合:.unpersist()はレイジー評価を使用しています。何らかのアクションを実行してアイテムを削除する必要がありますか?それはあまり意味がないように見えます。

お願いします。

答えて

0

私は(.unpersistを呼び出す必要があります)、その上に.remove前(インデックス)

あなたは可能性があり、おそらくそれを行うには良いアイデアですが、そうでない場合は、それがします自動的に1つのオブジェクトがガベージコレクションされます。

私はいくつかのアクションを実行し、間違いなくアイテム

をしませ削除する必要があります。 RDD上でunpersistを呼び出すと何も問題はありませんが、これは永続化されていません。削除するものがない場合は、より良い方法です。

+0

質問の第2公園について:私はあなたが現金化されたrddで「unpersist」と呼んだ場合、実際には実行されるでしょうか? 'unpersist'も遅延評価を使用していますか?なぜなら、 'unpersist'の後にこのrddに対して何らかのアクションを呼び出すとは思わないからです。 –

+0

これは怠惰ではありませんが、デフォルトでは非同期です。完了したことを確認したい場合は、ブロック版 'rdd.unpersist(true)'を使用してください。 – zero323

関連する問題