Spark会忽略执行程序和驱动程序内存的配置

时间:2018-07-12 18:53:57

标签: apache-spark pyspark

我试图增加Spark中执行程序和驱动程序的内存分配,但是我感到奇怪的是Spark忽略了我的配置。

我正在使用以下命令:

  

火花提交spark_consumer.py --driver-memory = 10G   --executor-memory = 5G --conf spark.executor.extraJavaOptions ='-XX:+ UseParallelGC   -XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps'

我的初始化代码是

class SparkRawConsumer:

    def __init__(self, filename):
        self.sparkContext = SparkContext.getOrCreate()

        self.sparkContext.setLogLevel("ERROR")
        self.sqlContext = SQLContext(self.sparkContext)

从理论上讲,我应该看到我的驱动程序总共有10GB的可用内存。但是,我在Spark UI中看到了这一点(我的可用内存少于400MB): enter image description here

为什么Spark会忽略我要传递的配置?

2 个答案:

答案 0 :(得分:0)

定义火花配置的三种方法

1)spark-env.sh

2)spark-submit参数

3)硬编码sparkConf,例如:sparkConf.set("spark.driver.memory","10G");

优先级是:硬编码> spark-submit> spark.env;

如果您认为自己的参数被其他内容覆盖,则可以使用以下命令进行检查:sparkConf.getOption("spark.driver.memory");

如果要确保您的选项不会覆盖硬代码,则

您可以在此处查看所有选项:https://spark.apache.org/docs/latest/configuration.html

答案 1 :(得分:0)

这里的问题是我没有正确指定参数的顺序。键入spark-submit --help可以清楚地指定输入参数到spark-submit的顺序:

Usage: spark-submit [options] <app jar | python file | R file> [app arguments]

一旦更改了参数的顺序,便可以增加PySpark应用程序的内存:

spark-submit --driver-memory 8G --executor-memory 8G spark_consumer.py
相关问题