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

Posted

技术标签:

【中文标题】使用 Jupyter Notebook 为 PySpark 内核设置 spark.app.name【英文标题】:Setting spark.app.name for PySpark kernel with Jupyter Notebook 【发布时间】:2018-05-07 05:29:00 【问题描述】:

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

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

更新:为笔记本添加了我的运行命令的代码 sn-p

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

【问题讨论】:

【参考方案1】:

在您指定SparkContext() 的前几行中,您可以包含一个配置对象。您可以使用配置对象来设置各种设置,但链接 set('property_name', 'property_value')

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

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

【讨论】:

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

以上是关于使用 Jupyter Notebook 为 PySpark 内核设置 spark.app.name的主要内容,如果未能解决你的问题,请参考以下文章

将Jupyter Notebook转换为Markdown等其他格式

为 Jupyter Notebook 安装 ffmpeg

为 jupyter notebook 安装库

jupyter notebook

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

Jupyter Notebook 快捷键使用指南