首页 > 解决方案 > pyspark local[*] vs spark.executor.cores"

问题描述

我正在使用 python pyspark 在本地模式下运行 spark 集群。火花配置选项之一设置为: "spark.executor.cores": "8" "spark.cores.max": "8"

设置所有选项后:

SparkSession.builder.config(conf=spark_configuration)

我建立了火花上下文: SparkSession.builder.master("local[*]").appName(application_name).getOrCreate()

我的机器有 16 个内核,我看到应用程序消耗了所有可用资源。我的问题是选项"local[*]""spark.executor.cores": "8"火花驱动程序有何影响(本地执行程序将消耗多少核心)?

标签: pythonapache-sparkpyspark

解决方案


这是我在具有 12 个内核的系统上观察到的:

当我将执行器核心标记为 4 时,将在独立模式下创建总共 3 个执行器,每个执行器有 4 个核心。

spark-ui 独立模式

但本地模式并非如此。即使我通过标志--num-executors 4或改变spark.driver.cores/spark.executor.cores/spark.executor.instances什么都不会改变执行者的数量。一直以来,只有一个 executor 以 id 作为驱动程序,并且 cores 将等于我们在 master 中传递的内容。 spark-ui 本地模式


推荐阅读