据我了解,广播变量只创建一次,但多次使用。所以我发现我应该在单例类中创建一个广播变量,这是一个坏主意吗?使用单例类来保存广播变量有哪些优缺点?
答案 0 :(得分:6)
我认为广播变量值得一些解释,以便更好地理解这种机制的工作原理:
广播变量允许在每台计算机上缓存只读变量,而不是通过任务发送它的副本。例如,它可以用于以有效的方式为每个节点提供大输入数据集的副本 您可以在以下网址查看更多详情:Spark Broadcast variables
在Spark中创建一个广播变量后,你会得到一个围绕v的包装器(通过调用broadcastVar.value()
访问),所以使用单例将使用包装器的单例引用,而不是实际值,因此,单身模式可能对两种方式的影响都小得多
您还可以在Spark执行的整个生命周期中使用相同的包装器引用。
由于这是对只读变量的引用,因此这些选项将呈现类似的行为。