Jupyter/PySpark Notebook连接YARN时环境变量配置报错求助
解决办法
1. 强制指定Spark为本地模式
你的PySpark Shell默认用了local[*]模式,而Notebook代码可能被Geomesa或默认配置触发了YARN模式。直接在初始化SparkSession时显式指定master:
from pyspark.sql import SparkSession from geomesa_pyspark import configure_spark # 方式1:直接构建SparkSession时指定 spark = SparkSession.builder \ .master("local[*]") .appName("GeomesaDemo") .getOrCreate() # 方式2:结合geomesa_pyspark的配置 conf = configure_spark(master="local[*]") spark = SparkSession.builder.config(conf=conf).getOrCreate()
2. 排查并清除YARN相关隐式配置
检查是否有环境变量或配置文件强制设置了YARN作为master:
- 在Notebook中执行
!echo $SPARK_MASTER,如果输出是yarn,需要清除这个环境变量 - 查看Spark默认配置文件(如
spark-defaults.conf),如果有spark.master=yarn的行,注释掉
3. 禁用Geomesa的YARN自动触发
部分Geomesa版本会默认尝试连接YARN,可通过Spark配置强制关闭:
spark = SparkSession.builder \ .master("local[*]") .appName("GeomesaDemo") .config("spark.yarn.isPython", "false") .config("spark.submit.deployMode", "client") .getOrCreate()
4. (可选)如果必须用YARN模式
若业务场景依赖YARN,需要在Docker镜像中补充Hadoop客户端配置:
- 从外部YARN集群获取
core-site.xml、yarn-site.xml等配置文件 - 在Dockerfile中添加复制命令:
COPY hadoop-conf/ /opt/hadoop/conf/ ENV HADOOP_CONF_DIR="/opt/hadoop/conf" ENV YARN_CONF_DIR="/opt/hadoop/conf" - 确保容器网络能连通外部YARN集群的ResourceManager和NodeManager端口
内容的提问来源于stack exchange,提问作者Luigi
相关产品推荐
相关产品推荐

