据我了解,广播变量只创建一次,但多次使用.所以我发现我应该在单例类中创建一个广播变量,这是一个坏主意吗?使用单例类来保存广播变量的优缺点是什么?
我认为广播变量值得一些解释,以便更好地理解这种机制的工作原理:
一个广播变量可以保持一个只读的每台机器上的可变缓存,而不是出货的副本与任务.例如,它可以用于以有效的方式为每个节点提供大输入数据集的副本.
您可以在以下位置查看更多详细信息:Spark Broadcast变量
在Spark中创建一个广播变量之后,你会得到一个v 包装器(通过调用访问broadcastVar.value()
),所以使用单例将使用包装器的单例引用,而不是实际值,因此,单例模式可能会少得多无论如何影响.
您还可以在Spark执行的整个生命周期中使用相同的包装器引用.
由于这是对只读变量的引用,因此这些选项将呈现类似的行为.