gpt4 book ai didi

java - Spark 中的 volatile 变量

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:49 24 4
gpt4 key购买 nike

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

我有一个多线程进程,它使用 volatile total 变量来跟踪多个线程之间的总和。该变量和所有正在执行的方法都是静态的。我很好奇如果我有多个 Spark Worker 并行执行此进程的单独实例,则此变量将如何表现。

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

编辑:我想要多线程并使用 Spark 的原因是我的程序是一种遗传算法,其流程如下:将 n 个群体分配给 Spark,理想情况下每个 worker 分配 1 个群体。每个种群有10-100个“个体”。对于每个个体,通过运行多线程过程 100 次(每次迭代都有一个小的参数变化)来计算其适应度,并返回迭代总数的函数。

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

最佳答案

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

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

关于java - Spark 中的 volatile 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37127557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com