EMR中运行Jupyter PySpark Notebook:已安装模块仍提示找不到
解决EMR集群Jupyter PySpark内核无法识别已安装依赖的问题
方法1:修改PySpark内核配置文件
- 登录EMR主节点,找到PySpark内核配置文件,默认路径为
/usr/share/jupyter/kernels/pyspark/kernel.json - 编辑该文件,在
env字段中指定集群全局Python解释器路径(需匹配Bootstrap安装依赖的Python环境):{ "display_name": "PySpark", "language": "python", "argv": [ "/usr/bin/python3", // 替换为集群实际的Python路径 "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "env": { "PYSPARK_PYTHON": "/usr/bin/python3", "PYSPARK_DRIVER_PYTHON": "/usr/bin/python3", "PATH": "/usr/local/bin:/usr/bin:$PATH" } } - 保存后重启Jupyter服务:
sudo systemctl restart jupyter-server
方法2:在Notebook中手动指定Python环境
- 在Notebook首个单元格中添加以下代码,强制PySpark使用集群全局Python环境:
import os os.environ['PYSPARK_PYTHON'] = '/usr/bin/python3' os.environ['PYSPARK_DRIVER_PYTHON'] = '/usr/bin/python3' from pyspark.sql import SparkSession spark = SparkSession.builder.appName("DependencyTest").getOrCreate() - 执行后再尝试导入目标依赖包
方法3:确认Bootstrap Action的安装路径
- 检查Bootstrap脚本是否使用全局
pip安装依赖(而非虚拟环境内的pip),若依赖安装在特定虚拟环境中,需将内核配置中的Python路径替换为虚拟环境的解释器路径,例如虚拟环境路径为/home/hadoop/my_env,则路径改为/home/hadoop/my_env/bin/python
验证配置有效性
- 重启Jupyter后,运行以下代码确认当前Python环境和已安装包:
import sys print("当前Python路径:", sys.executable) import pkg_resources print("已安装包列表:", [pkg.key for pkg in pkg_resources.working_set]) - 确认输出的Python路径与Bootstrap安装依赖的路径一致,且包含目标
xxxxx包
内容的提问来源于stack exchange,提问作者ezamur
相关产品推荐
相关产品推荐

