PySpark测试调用show()报Py4JJavaError错误求助
问题分析与解决
不是protocol.py文件的问题,错误根源是Windows系统中Spark无法找到python3命令。从错误日志核心信息可明确:
java.io.IOException: Cannot run program "python3": CreateProcess error=2, The system cannot find the file specified
Windows环境下Python默认执行命令是python而非python3,但PySpark默认尝试调用python3启动Python Worker,导致找不到可执行文件抛出错误。
解决方法
1. 在测试代码中指定PySpark使用的Python命令
在测试函数开头添加Spark配置:
@pytest.mark.usefixtures("spark_session") def test_company_code(spark_session: SparkSession): # 配置PySpark使用python命令 spark_session.conf.set("spark.pyspark.python", "python") # 生成Mock数据及后续代码不变...
2. 设置系统环境变量
添加系统环境变量指定PySpark的Python路径:
- 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量 → 新建系统变量
- 变量名:
SPARK_PYSPARK_PYTHON,变量值:python - 重启命令行或IDE后重新运行测试
3. 创建Python3软链接(Windows)
找到Python安装目录(如C:\Users\你的用户名\AppData\Local\Programs\Python\Python310),以管理员权限打开命令提示符,执行:
mklink python3.exe python.exe
让系统能识别python3命令。
内容的提问来源于stack exchange,提问作者TechNewbie
相关产品推荐
相关产品推荐

