Spark 中的易失性变量

Volatile variables in Spark

在 Spark 内部使用多线程时,volatile 变量如何工作?

我有一个多线程进程,它使用易失性 total 变量来跟踪跨多个线程的总和。这个变量和正在执行的所有方法都是static。我很好奇如果我有多个 spark worker 并行执行这个进程的单独实例,这个变量会如何表现。

他们每个人都有自己的 total 变量还是会在工作节点之间共享?

编辑:我想要多线程并使用 spark 的原因是我的程序是这样流动的遗传算法:将 n 种群分布到 Spark,理想情况下每个工人 1 个种群。每个种群有10-100个"individuals."每个个体,通过运行多线程处理100次(每次迭代都有一个小的参数变化)和return总和的函数计算其适应度迭代。

多线程进程需要很长时间,所以我想以任何可能的方式加快它的速度。

好吧,我想我是通过结合@vanza 的评论和答案 来解决这个问题的。

本质上,每个工作节点都有自己的 class 执行多线程进程的实例,因此它们不可能重叠。这实际上非常直观,因为如果我的工作节点位于不同的机器上,它们将不会在它们之间共享变量。