【发布时间】:2016-04-10 05:47:03
【问题描述】:
据我了解,广播变量创建一次,但使用多次。所以我想到我应该在单例类中创建一个广播变量,这是一个坏主意吗?使用单例类来保存广播变量的优缺点是什么?
【问题讨论】:
标签: java apache-spark broadcast
据我了解,广播变量创建一次,但使用多次。所以我想到我应该在单例类中创建一个广播变量,这是一个坏主意吗?使用单例类来保存广播变量的优缺点是什么?
【问题讨论】:
标签: java apache-spark broadcast
我认为广播变量值得解释一下,以便更好地理解这种机制是如何工作的:
广播变量允许在每台机器上缓存一个只读变量,而不是随任务一起发送它的副本。例如,它可用于以有效的方式为每个节点提供大型输入数据集的副本。
您可以通过以下方式查看更多详细信息:Spark Broadcast variables
在 Spark 中创建广播变量后,您将获得一个围绕 v 的 包装器(通过调用 broadcastVar.value() 访问),因此使用单例将使用单例引用作为包装器,而不是实际值等,无论哪种方式,单例模式的影响都可能要小得多。
您还可以在 Spark 执行的整个生命周期中使用相同的包装器引用。
由于这是对只读变量的引用,因此这些选项将呈现类似的行为。
【讨论】: