spark中的volatile变量

niwlg2el  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(405)

在spark内部使用多线程时volatile变量是如何工作的?
我有一个多线程进程,它使用volatile total 变量来跟踪多个线程的总和。此变量和正在执行的所有方法都是 static . 我很好奇,如果我有多个spark worker并行执行这个过程的不同示例,这个变量会有什么表现。
他们每个人都有自己的吗 total 变量还是将在工作节点之间共享?
编辑:我想使用多线程和spark的原因是我的程序是一个遗传算法,其流程如下:分布式 n 人口的Spark,理想的情况下,每个工人1人口。每个群体有10-100个“个体”。对于每个个体,通过运行多线程进程100次(每次迭代都有一个小的参数变化)来计算其适应度,并返回迭代总数的函数。
多线程进程需要很长时间,所以我想以任何可能的方式加快它。

yquaqz18

yquaqz181#

好吧,我想我是把@vanza的评论和这里的答案结合起来的。
实际上,每个工作节点都有自己的类示例来执行多线程进程,因此它们不可能重叠。这实际上非常直观,因为如果我的工作节点在不同的机器上,它们之间就不会共享变量。

相关问题