2015-11-25 3 views
6

Sparkにはブロードキャスト変数が付属しています。これにより、各マシンにキャッシュされた読み取り専用変数を、タスクのコピーを出荷するのではなく保存することができます。destroy()とunpersist()の違いは何ですか?

もちろん、「ブロードキャストされた変数」がもう使用されない場合、この変数を削除するのは当然です。しかしfrom the documentation、それは双方向放送の変数を削除するのでありますように思わあるWICH:

unpersist() //Destroy all data and metadata related to this broadcast variable. 
destroy() //Asynchronously delete cached copies of this broadcast on the executors. 

私はきちんとすべてをundestandすることを確認していない、同期の削除と同じ()が、)(unpersistんでしょうか?これは私にとっては不明です。

答えて

6

それは二つの現在利用可能な具体的な実装(HttpBroadcastTorrentBroadacst)に実装されているように、2つの違いがある:destroy

  • destroy削除し、非ブロッキングしている間

    • unpersistは(awaits for confirmation)をブロックされたブロックを永続しましたdriverからunpersistはない

    その他これらは、BlockMangerMasterの同じロジックを使用します。

  • +1

    2016年6月現在、 'delete'メソッドはありません(このメソッドは' destroy'と呼ばれます).' destroy'と 'unpersist'の両方にはブロックされるかどうかのオプションがあります。残りの唯一の違いは、 'destroy'もマスター上のブロードキャストファイルを削除することです。 – Dici

    +0

    @Diciありがとうございます。私はすぐにこれを更新します。 – zero323

    +1

    @Dici私はブロックすることが分かっている破壊することができます[スパークするためにプライベート(https://github.com/apache/spark/blob/d6dc12ef0146ae409834c78737c116050961f350/core/src/main/scala/org/apache/spark/broadcast/Broadcast) .scala#L106)。ここで何かが恋しい? – zero323

    関連する問題