Spark 与内核的并行性

Posted

技术标签:

【中文标题】Spark 与内核的并行性【英文标题】:Spark parallelism with cores 【发布时间】:2020-10-04 16:03:36 【问题描述】:

我已经开始学习 spark 并尝试运行这个示例:

package examples

import org.apache.spark.sql.SparkSession

object Test extends App 
  val spark: SparkSession = SparkSession.builder()
    .master("local[2]")
    .appName("SparkByExample")
    .getOrCreate()

  println("First SparkContext:")
  println("APP Name :"+spark.sparkContext.appName)
  println("Deploy Mode :"+spark.sparkContext.deployMode)
  println("Master :"+spark.sparkContext.master)
  println("Default Min parallelism" + spark.sparkContext.defaultMinPartitions)
  println("Default parallelism" + spark.sparkContext.defaultParallelism)

  val sparkSession2: SparkSession = SparkSession.builder()
    .master("local[1]")
    .appName("SparkByExample-test")
    .getOrCreate()

  println("Second SparkContext:")
  println("APP Name :"+sparkSession2.sparkContext.appName)
  println("Deploy Mode :"+sparkSession2.sparkContext.deployMode)
  println("Master :"+sparkSession2.sparkContext.master)
  println("Default Min parallelism" + sparkSession2.sparkContext.defaultMinPartitions)
  println("Default parallelism" + sparkSession2.sparkContext.defaultParallelism)



在这里,我创建了两个 spark 会话,第一个具有两个内核,第二个具有一个内核,但是当我运行它时,两个会话都有两个并行性,我不明白为什么?

First SparkContext:
APP Name :SparkByExample
Deploy Mode :client
Master :local[2]
Default Min parallelism2
Default parallelism2

Second SparkContext:
APP Name :SparkByExample
Deploy Mode :client
Master :local[2]
Default Min parallelism2
Default parallelism2

【问题讨论】:

【参考方案1】:
   println("Default parallelism" + sparkSession2.sparkContext.defaultParallelism)

“sparkContext.defaultParallelism”返回定义在上的默认并行度级别 SparkContext ,它的默认值是根据您的应用程序上可用的核心数计算得出的。

【讨论】:

以上是关于Spark 与内核的并行性的主要内容,如果未能解决你的问题,请参考以下文章

1 个 cpu 设备上 OpenCL 的并行性

CUDA 块并行性

CUDA动态并行中的同步

spark 并行度

Spark性能调优之合理设置并行度

Spark性能调优之合理设置并行度