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

时间:2015-11-25 15:56:53

标签: scala apache-spark

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

当然,当"广播变量"不再使用了,删除这个变量是很自然的。但是from the documentation,似乎有两种方法可以删除广播变量:

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

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

1 个答案:

答案 0 :(得分:9)

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

  • destroy阻止了awaits for confirmation),而unpersist默认为非阻止
  • destroydriver删除unpersist的持久化块,BlockMangerMaster

否则它们使用<!DOCTYPE html> <html> <body> <script> function ledOn() { var xhttp = new XMLHttpRequest() xhttp.open("GET", "control.html?led=on", true) xhttp.send() } function ledOff() { var xhttp = new XMLHttpRequest() xhttp.open("GET", "control.html?led=off", true) xhttp.send() } </script> <input type="button" onclick="ledOn()" value="LED ON" /> <input type="button" onclick="ledOff()" value="LED OFF" /> </body> </html> 的相同逻辑。