我找到了这个链接https://gist.github.com/BenFradet/c47c5c7247c5d5d0f076,它显示了一个实现,其中在spark中,正在更新广播变量。这是一个有效的实现意味着执行者会看到广播变量的最新值吗?
答案 0 :(得分:3)
您指的代码是使用Broadcast.unpersist()方法。如果您检查Spark API Broadcast.unpersist()方法,则表示“在执行程序上异步删除此广播的缓存副本。如果在调用此广播后使用广播,则需要将其重新发送给每个执行程序。 “有一个重载方法unpersist(布尔阻塞),它将阻塞,直到unpersisting完成。所以这取决于你如何在Spark应用程序中使用Broadcast变量。在spark中,如果改变广播变量,则不会自动重新广播。司机必须重新发送它。 Spark文档说你不应该修改广播变量(Immutable)以避免执行程序节点处理中的任何不一致,但如果你想控制广播变量的生命周期,可以使用unpersist()和destroy()方法。请参考spark jira https://issues.apache.org/jira/browse/SPARK-6404