无法设置火花驱动内存

Unable to set spark driver memory

我正在从 Jupiter 笔记本构建一个 spark(运行 在 Apache Spark 版本 2.4.3 上)会话

spark_session  = SparkSession.builder
                      .master("yarn-client")
                      .enableHiveSupport()
                      .getOrCreate()

spark_session.conf.set("spark.executor.memory", '8g')
spark_session.conf.set('spark.executor.cores', '3')
spark_session.conf.set('spark.cores.max', '3')
spark_session.conf.set("spark.driver.memory",'8g')
sc = spark_session.sparkContext

我可以从应用程序大师那里看到所有参数都已正确设置 spark.driver.memory。 spark.driver.memory 不管我怎么设置它都只用了 1GB。

我检查了 spark-default.conf,但我没有 spark.driver.memory 等参数。为了检查它是否与会话构建器/Jupiter 一起使用,我 运行 从命令行使用 spark-submit 的应用程序,令我惊讶的是它选择了我正在传递的驱动程序内存。

有人可以解释一下吗?它不从 jupyter

中只选择 spark.driver.memory 的原因可能是什么?

Jupyter notebook 将以 yarn-client 模式启动 pyspark,由于 JVM 驱动程序已经启动,因此无法使用 属性 'conf' 设置驱动程序内存和一些配置。你必须在命令行中设置它。

所以,对于你的问题 - 当你 运行 在客户端模式下通过 "conf.set" 设置 属性 时,将无法工作,因为 JVM 驱动程序已经默认启动配置。这就是为什么当您从命令行传递 属性 时它会选择它们。

启动 pyspark 的简单方法是

pyspark --driver-memory 2g --executor-memory 2g

更新:

要使用自定义 pyspark 参数启动 jupyter,请创建自定义内核,更多关于 jupyter 内核入门的信息:http://cleverowl.uk/2016/10/15/installing-jupyter-with-the-pyspark-and-r-kernels-for-spark-development/

并且在定义 "kernel.json" 时将 --driver-memory 2g --executor-memory 2g 添加到 PYSPARK_SUBMIT_ARGS 选项。