rdd—在ApacheSpark中,为什么设置“spark.task.cpu”是无用的?

3hvapo4f  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(389)

根据https://spark.apache.org/docs/2.4.6/configuration.html
该选项理论上应该允许每个任务占用2个核心。现在如果我有一台16核的机器并运行以下程序:

TestSC = <... initialising spark context here>

      TestSC.setLocalProperty("spark.task.cpus", "2")

      val rdd = TestSC.parallelize(1 to 100, 100).map { i =>
        Thread.sleep(99999999)
        i
      }

      rdd.collect()

它应该允许8个任务同时执行。但当我转到spark ui时,它仍然显示同时执行的16个任务。这是怎么回事?这个选项被禁用了吗?

u91tlkcl

u91tlkcl1#

在创建spark上下文之前设置属性,如下所示:

val config = new SparkConf().set("spark.tasks.cpus","2").setAppName("test").setMaster("local[*]")
val sc = new SparkContext(config)

当spark上下文被这样创建时,设置应该生效。

相关问题