在单例中使用广播变量的优缺点是什么?
What are the pros and cons of using broadcast variables in a singleton?
据我了解,广播变量创建一次,但使用多次。所以我想到我应该在单例 class 中创建一个广播变量,这是个坏主意吗?使用单例 class 来保存广播变量的优缺点是什么?
我认为 广播变量 需要一些解释,以便更好地理解此机制的工作原理:
一个广播变量允许在每台机器上缓存一个read-only变量而不是传送它的副本任务。例如,它可以用于以高效的方式为每个节点提供大型输入数据集的副本。
您可以在以下位置查看更多详细信息:Spark Broadcast variables
在 Spark 中创建广播变量后,您会在 v 周围得到一个 wrapper(通过调用 broadcastVar.value()
访问),因此使用单例将使用单例包装器的参考,而不是实际值,因此,单例模式的影响可能要小得多。
您还可以在整个 life-cycle 的 Spark 执行过程中使用相同的包装器引用。
由于这是对 read-only 变量的引用,因此这些选项将呈现类似的行为。
据我了解,广播变量创建一次,但使用多次。所以我想到我应该在单例 class 中创建一个广播变量,这是个坏主意吗?使用单例 class 来保存广播变量的优缺点是什么?
我认为 广播变量 需要一些解释,以便更好地理解此机制的工作原理:
一个广播变量允许在每台机器上缓存一个read-only变量而不是传送它的副本任务。例如,它可以用于以高效的方式为每个节点提供大型输入数据集的副本。
您可以在以下位置查看更多详细信息:Spark Broadcast variables
在 Spark 中创建广播变量后,您会在 v 周围得到一个 wrapper(通过调用 broadcastVar.value()
访问),因此使用单例将使用单例包装器的参考,而不是实际值,因此,单例模式的影响可能要小得多。
您还可以在整个 life-cycle 的 Spark 执行过程中使用相同的包装器引用。
由于这是对 read-only 变量的引用,因此这些选项将呈现类似的行为。