在 Jupyter Notebook 中设置 PySpark executor.memory 和 executor.core

TSA*_*SAR 5 apache-spark pyspark jupyter-notebook

我正在从 Jupyter Notebook 中初始化 PySpark,如下所示:

from pyspark import SparkContext
#
conf = SparkConf().setAppName("PySpark-testing-app").setMaster("yarn")
conf = (conf.set("deploy-mode","client")
       .set("spark.driver.memory","20g")
       .set("spark.executor.memory","20g")
       .set("spark.driver.cores","4")
       .set("spark.num.executors","6")
       .set("spark.executor.cores","4"))

sc = SparkContext(conf=conf)
sqlContext = SQLContext.getOrCreate(sc)
Run Code Online (Sandbox Code Playgroud)

但是,当我启动 YARN GUI 并查看“正在运行的应用程序”时,我看到我的会话被分配了 1 个容器、1 个 vCPU 和 1GB 的 RAM,即默认值!我可以获得上面列出的所需的传递值吗?

Jac*_*k_H 5

Jupyter笔记本将以yarn-client模式启动pyspark,驱动程序内存和某些配置无法使用“sparkConf”类进行设置。您必须在命令行中设置它。

看看官方文档对内存设置的解释:

注意:在客户端模式下,不能直接在应用程序中设置此配置SparkConf,因为此时驱动程序 JVM 已经启动。相反,请通过--driver-memory command行选项或在默认属性文件中进行设置。

还有另一种方法可以做到。

import os
memory = '20g'
pyspark_submit_args = ' --driver-memory ' + memory + ' pyspark-shell'
os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args
Run Code Online (Sandbox Code Playgroud)

因此,其他配置应采用与上述相同的方式。