我在带有YARN的Hadoop集群上运行带有PySpark的Jupyter Notebook服务器(如here所述)。我注意到通过新笔记本启动的每个Spark应用程序都在Spark Web UI中显示为名为“PySparkShell”的应用程序(对应于“spark.app.name”配置)。
我的问题是我有时会在Jupyter中运行许多笔记本,但所有这些笔记本都出现在Spark的Web UI中,其通用名称为“PySparkShell”。我知道我可以将默认名称更改为其他名称,并且我也知道一旦创建了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
答案 0 :(得分:0)
在您指定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)