使用 Jupyter Notebook 为 PySpark 内核设置 spark.app.name



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

我的问题是,我有时有很多笔记本在Jupyter中运行,但它们都出现在Spark的Web UI中,具有相同的通用名称"PySparkShell"。我知道我可以将默认名称更改为其他名称,并且我也知道创建 SparkContext 后无法更改应用名称。我的问题是:我可以在内核启动时为每个应用程序指定不同的名称吗?(最好是可以帮助我将笔记本名称(即"Untitled.ipynb")与其 Spark 应用程序名称或 ID 联系起来的东西)

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

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 对象来设置各种设置,但链接set('property_name', 'property_value')

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

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

最新更新