如何确保工作节点不能更改 Spark 中的广播变量?



因为我们可以使用可变对象作为 Spark 中的广播变量,这意味着工作节点可以很容易地更改该对象的状态。

有什么方法可以限制工作节点不修改可变对象吗?

对象被序列化,发送到所有工作线程,并在每个工作线程中分别反序列化。如果一个工作线程改变了对象,它只会影响那个工作线程。所以实际上,它已经是不可变的。

如果你想限制它,以便即使是worker也不能在他们自己的JVM中变异,你应该简单地使用一个不可变的对象。如有必要,创建一个不可变包装器或围绕可变对象进行复制并广播该包装器。

最新更新