destroy()和unpersist()有什么区别?

Wil*_*ill 8 scala apache-spark

Spark附带了Broadcast变量,它允许我们在每台机器上保留一个只读变量,而不是随副本一起发送它的副本.

当然,当不再使用"广播变量"时,删除该变量是很自然的.但是从文档来看,似乎有两种方法可以删除广播变量:

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

我不确定是否正确地解决了所有问题,unpersist()是否与delete()同步但同步?这对我来说不太清楚.

zer*_*323 10

由于它是在两个当前可用的具体实现(HttpBroadcastTorrentBroadacst)中实现的,因此存在两个不同之处:

  • destroy阻止(等待确认),而unpersist默认情况下是非阻塞
  • destroydriverwhile unpersist中删除持久化的块不会

否则这些使用相同的逻辑BlockMangerMaster.