独立模式下的Spark并行性

时间:2017-07-22 12:51:19

标签: apache-spark pyspark databricks

我正试图在我的系统中以独立模式运行spark。我系统的当前规格是8核和32 Gb内存。基于this article我计算火花配置如下:

spark.driver.memory 2g
spark.executor.cores 3
spark.executor.instances 2
spark.executor.memory 20g
maximizeResourceAllocation TRUE

我在这个jupyter笔记本中创建了spark上下文并且正在检查并行度级别,通过这个

sc = SparkContext()
sc.defaultParallelism

默认的并行性给了我8.我的问题是为什么它给我8即使我提到了2个内核?如果它没有给我系统的实际并行性,那么如何获得实际的并行度?

谢谢!

3 个答案:

答案 0 :(得分:2)

sc.defaultParallelism

返回SparkContext上定义的默认并行度级别。默认情况下,它是应用程序可用的核心数。

但要了解jupyter笔记本的 预先应用 设置,可以打印

 sc._conf.getAll()
来自scala sc.getConf.getAll.foreach(println)

那应该有属性

  

spark.default.parallelism

我认为在这种情况下,它的预设就是为什么你的情况会得到8分。

答案 1 :(得分:0)

谢谢大家,如果有人在使用pyspark(版本> 2.3.X)的集群执行中遇到相同的需求,我必须恢复变量,如下所示: spark.sparkContext.getConf().getAll(),然后使用python仅获取spark.default.parallelism键的值。 以防万一! 谢谢!

答案 2 :(得分:0)

我遇到了同样的问题,我的 mac 有 1 个 CPU,只有 4 个内核,但是我什么时候会这样做

sc.defaultParallelism

我总是得到 8 个。

所以我一直想知道为什么会这样,最后发现它是在 cpu 上启用的超线程,它在 mac 上为您提供了 8 个逻辑 cpu

$ sysctl hw.physicalcpu hw.logicalcpu
hw.physicalcpu: 4
hw.logicalcpu: 8