如何将处理限制为独立 Spark 中指定数量的内核

jav*_*dba 5 scala apache-spark

我们尝试使用各种设置组合 - 但 mpstat 显示所有或大多数 cpu 始终被使用(在单个 8 核系统上)

已经尝试了以下内容:

将主设置为:

local[2]
Run Code Online (Sandbox Code Playgroud)

发送

conf.set("spark.cores.max","2")
Run Code Online (Sandbox Code Playgroud)

在火花配置中

还使用

--total-executor-cores 2
Run Code Online (Sandbox Code Playgroud)

--executor-cores 2
Run Code Online (Sandbox Code Playgroud)

在所有情况下

mpstat -A
Run Code Online (Sandbox Code Playgroud)

显示所有 CPU 都在使用 - 而不仅仅是主机。

所以我现在很茫然。我们确实需要将使用限制为指定数量的 CPU。

aha*_*jib 6

我在内存大小方面遇到了同样的问题,我想增加它,但以上都不适合我。基于此用户帖子,我能够解决我的问题,我认为这也适用于核心数:

from pyspark import SparkConf, SparkContext

# In Jupyter you have to stop the current context first
sc.stop()

# Create new config
conf = (SparkConf().set("spark.cores.max", "2"))

# Create new context
sc = SparkContext(conf=conf)
Run Code Online (Sandbox Code Playgroud)

希望这对你有帮助。并且,如果您已经解决了您的问题,请将您的解决方案作为这篇文章的答案发送,以便我们都能从中受益:)

干杯

  • spark.cores.max +1 - 仅供参考,如果使用 spark-submit,您应该能够使用以下命令从命令行指定:--conf spark.cores.max=2 (2认同)

jav*_*dba 0

显然 Sparkstandalone 忽略了spark.cores.max设置。该设置在纱线中确实有效。

  • 那么如何在独立环境中实现这一点呢? (2认同)