Scala 如何更改代码中使用的核心数?

Scala 如何更改代码中使用的核心数?,scala,apache-spark,Scala,Apache Spark,我有一个带有Spark的独立程序,我希望使用不同数量的内核获得运行时结果。无论我一直在尝试什么,我都得到了相同的运行时值 这是我在创建Spark上下文之前设置核心数的代码部分: System.setProperty("spark.cores.max","96") 我拥有的内核总数是252。一个建议是尝试使用SparkConf().setMaster(local[numCores])进行设置。例如,此示例将其设置为4个核心: val conf = new SparkConf().setAppNa

我有一个带有Spark的独立程序,我希望使用不同数量的内核获得运行时结果。无论我一直在尝试什么,我都得到了相同的运行时值

这是我在创建Spark上下文之前设置核心数的代码部分:

System.setProperty("spark.cores.max","96")

我拥有的内核总数是252。

一个建议是尝试使用
SparkConf().setMaster(local[numCores])
进行设置。例如,此示例将其设置为4个核心:

val conf = new SparkConf().setAppName("app").setMaster("local[4]")
val sc = new SparkContext(conf)

有关详细信息,请参见此处。

要完成langkilde答案,您可以使用
spark.cores.max
属性,并将其设置在
SparkConf
(不在系统的属性中…)上,或将其作为
spark submit
的参数传递。顺便说一下,您还可以阅读文档:


并非Spark的所有方面都有很好的文档记录,但配置确实如此。

在向我们展示您正在使用哪些例程来计时程序的执行时,您可能值得一试。这类问题中的许多都是由于测量错误而不是并行执行错误造成的。我正在运行独立的应用程序,在完成程序后,它会给出总的运行时间。我自己没有用任何东西来衡量!我确信程序运行正确。252个内核的运行时间为270秒。您尝试过-Dspark.cores.max=96吗?然后您可以确定,在jvm启动之前,该值已设置。在您的代码中检查
String oldValue=System.setProperty(“spark.cores.max”,“96”)
并检查它。也许是spark为您设置的。您的数据和RDD流是什么样子的?例如,如果您的数据不是很分区,那么添加更多的核心将不会有帮助。好吧,这只适用于在本地模式下运行的情况。我怀疑她在一台机器上有252个核。