使用Jupyter笔记本设置PySpark内核的spark.app.name

使用Jupyter笔记本设置PySpark内核的spark.app.name,pyspark,jupyter-notebook,Pyspark,Jupyter Notebook,我正在Hadoop集群上运行一个带有PySpark(如前所述)的Jupyter笔记本服务器。我注意到,通过新笔记本启动的每个Spark应用程序在Spark Web UI中显示为一个名为“PySparkShell”的应用程序(对应于“Spark.app.name”配置) 我的问题是,有时我有许多笔记本电脑在Jupyter中运行,但它们都以相同的通用名称“PySparkShell”出现在Spark的Web UI中。我知道我可以将默认名称更改为其他名称,我还知道一旦创建了SparkContext,我就

我正在Hadoop集群上运行一个带有PySpark(如前所述)的Jupyter笔记本服务器。我注意到,通过新笔记本启动的每个Spark应用程序在Spark Web UI中显示为一个名为“PySparkShell”的应用程序(对应于“Spark.app.name”配置)

我的问题是,有时我有许多笔记本电脑在Jupyter中运行,但它们都以相同的通用名称“PySparkShell”出现在Spark的Web UI中。我知道我可以将默认名称更改为其他名称,我还知道一旦创建了SparkContext,我就无法更改应用程序名称。我的问题是:我是否可以使每个应用程序在内核启动时都有一个不同的名称?(最好是能够帮助我将笔记本名称,即“Untitled.ipynb”,连接到其Spark应用程序名称或ID的内容)

更新:为笔记本添加了我的run命令的代码段

export DAEMON_PORT=8880
ANACONDA_PATH=/opt/cloudera/parcels/Anaconda/bin
export PATH=$ANACONDA_PATH:$PATH
export PYSPARK_DRIVER_PYTHON=$ANACONDA_PATH/jupyter
export PYSPARK_DRIVER_PYTHON_OPTS="notebook --NotebookApp.open_browser=False --NotebookApp.ip='*' --NotebookApp.port=$DAEMON_PORT"
pyspark2 \
--executor-memory 5g \
--executor-cores 4 \
--driver-memory 20g \
--conf spark.shuffle.service.enabled=true \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.dynamicAllocation.minExecutors=0 \
--conf spark.dynamicAllocation.maxExecutors=40

在指定
SparkContext()
的前几行中,可以包含一个配置对象。您可以使用config对象设置各种设置,但要链接
集('property\u name','property\u value')

我将通过设置执行器内存来演示

from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName('Your_Project_name').set("spark.executor.memory", "5g")
sc = SparkContext(conf)

这是行不通的,因为spark上下文已经在内核启动时自动创建,一旦发生这种情况,我就无法更改配置。