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