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 与内核的并行性的主要内容,如果未能解决你的问题,请参考以下文章