Jupyter Notebook怎么配置PySpark运行环境

冬萱大大_8689

冬萱大大_8689

2026-08-14

261人浏览

原创

结论:不用装 spark 二进制包也能跑 pyspark,因 pyspark 包自带轻量级本地引擎(含 jars/ 和 python/pyspark/),但必须调用 findspark.init()(可不传参)将其路径动态注入 sys.path;否则 jvm 找不到 spark-sql_2.12-*.jar 等类,导致 sparksession 创建静默失败或报 classnotfoundexception。

jupyter notebook怎么配置pyspark运行环境

直接说结论:不用装 Spark 二进制包也能跑 PySpark,但必须用 pyspark 包自带的本地引擎 + findspark 正确注册路径;否则 SparkSession.builder.master("local") 会静默失败或报 ClassNotFoundException。

为什么 import pyspark 成功却创建不了 SparkSession?

常见现象是执行 spark = SparkSession.builder.master("local").getOrCreate() 后卡住、无输出,或抛出 java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession。根本原因不是 Python 没导入,而是 JVM 找不到 Spark 的 Java 类 —— pyspark 包只含 Python 接口,不带 Spark 运行时(spark-sql_2.12-*.jar 等)。

  • 如果你用 pip install pyspark 安装,默认已包含轻量级本地 Spark 引擎(位于 site-packages/pyspark/jars/),此时 findspark.init() 可以不传路径,但必须调用
  • 如果你手动解压了官方 Spark 二进制包(如 /opt/spark-3.5.0),就必须显式传入路径:findspark.init('/opt/spark-3.5.0'),且该路径下要有 python/pyspark/ 和 jars/ 目录
  • 漏掉 findspark.init() 是最常踩的坑——它本质是把 $SPARK_HOME/python 和 $SPARK_HOME/python/lib/py4j-*.zip 动态加进 sys.path,没这步,Python 层能 import,JVM 层完全失联

findspark.init() 之后还报 No module named 'py4j'?

这是 py4j 版本不匹配的典型症状。PySpark 对 py4j 有严格版本要求(例如 pyspark==3.5.0 要求 py4j==0.10.9.8),而 pip 可能装错版本。

Jupyter Notebook 7.5.4
Jupyter Notebook 7.5.4

Jupyter Notebook 7.5.4 官方 PyPI wheel 包下载,适合用于本地交互式代码运行、数据分析、教学演示和配置文件实践。

下载
  • 先查当前 pyspark 带的 py4j 版本:python -c "from pyspark import __version__; print(__version__)"; ls $(python -c "import pyspark; print(pyspark.__file__[:pyspark.__file__.rfind('/')])")/lib/
  • 强制重装匹配版:pip install --force-reinstall --no-deps py4j==0.10.9.8(替换成你 pyspark 对应的实际版本)
  • 不要用 conda install pyspark 后再 pip 装 py4j —— conda 会锁死依赖,混用易冲突

怎么让 Jupyter 自动加载 SparkSession,不用每次写 findspark.init()?

可以配置 IPython startup 脚本,但要注意顺序和作用域 —— 必须在 kernel 启动早期执行,且不能依赖用户 Cell 的执行顺序。

  • 找到 IPython 配置目录:python -m IPython profile locate default(通常为 ~/.ipython/profile_default/)
  • 在 startup/ 子目录下新建 00-pyspark-init.py(文件名前缀数字确保优先执行)
  • 内容仅两行:
    import findspark
    findspark.init()
    
    (如果 Spark 路径非默认,补上参数如 findspark.init('/opt/spark'))
  • 重启 Jupyter Notebook,新打开的 notebook 就自动 ready,但旧 notebook 需重启 kernel 才生效

远程集群连接失败,master="yarn" 或 "spark://host:7077" 不起作用?

本地 Jupyter 默认只能连 local 模式。要连远程集群,必须满足三个硬条件:

  • 你的机器能直连集群节点的端口(如 YARN ResourceManager 的 8088、Spark Master 的 7077),防火墙和网络策略要放行
  • 集群客户端配置已就位:HADOOP_CONF_DIR 和 YARN_CONF_DIR 环境变量必须指向含 core-site.xml、yarn-site.xml 的目录,且这些 XML 里 host 名不能是内网别名(如 hadoop-master),得是 IP 或公网可解析域名
  • SparkSession 构建时显式指定依赖:
    spark = SparkSession.builder \
        .master("yarn") \
        .config("spark.hadoop.fs.defaultFS", "hdfs://192.168.1.100:9000") \
        .config("spark.yarn.jars", "hdfs://192.168.1.100:9000/spark-jars/*") \
        .getOrCreate()
    
    (spark.yarn.jars 必须指向 HDFS 上预上传的 jar 包,不能用本地路径)

真正容易被忽略的是:所有配置项(尤其是 spark.yarn.jars)必须在 .getOrCreate() 前完成,且一旦 Session 创建,后续 .config() 调用无效。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1671

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

4184

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1669

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

24197

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2967

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2987

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1163

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2323

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程