运行PySpark基础代码时遭遇WinError 2文件未找到错误求助
我最近在尝试运行一段简单的PySpark基础代码,但每次都会弹出WinError 2(文件未找到)的错误,实在搞不懂哪里出问题了,来求助大家!
我的PySpark代码如下:
from pyspark import SparkConf,SparkContext conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app") sc = SparkContext(conf=conf) print(sc.version) sc.stop()
我试着排查问题,下面是具体的错误回溯信息:
Traceback (most recent call last): File "D:\pycharm\pythonProject2\第三阶段\py_spark\spark基础.py", line 11, in <module> sc = SparkContext(conf=conf) ^^^^^^^^^^^^^^^^^^^^^^^ File "D:\ProgramData\anaconda3\Lib\site-packages\pyspark\context.py", line 195, in __init__ SparkContext._ensure_initialized(self, gateway=gateway, conf=conf) File "D:\ProgramData\anaconda3\Lib\site-packages\pyspark\context.py", line 417, in _ensure_initialized SparkContext._gateway = gateway or launch_gateway(conf) ...
我来帮你分析下这个WinError 2的常见原因和解决办法哈:
检查Java环境是否正确配置:PySpark依赖Java,WinError 2经常是找不到Java的可执行文件导致的。你可以先在命令行输入
java -version和javac -version看看能不能正常输出版本信息,如果不行的话,得先安装JDK(建议8或11版本,PySpark对这两个版本兼容性最好),然后把Java的bin目录添加到系统的PATH环境变量里,还要配置JAVA_HOME环境变量指向JDK的根目录,比如C:\Program Files\Java\jdk1.8.0_381。确认Spark的环境变量配置:如果已经装了Spark,要把Spark的bin目录加到系统PATH里,同时配置
SPARK_HOME环境变量指向Spark的安装根目录,比如D:\spark-3.5.0-bin-hadoop3。另外还要检查HADOOP_HOME,如果没装Hadoop的话,可以下个winutils.exe放到Spark的bin目录里,同时配置HADOOP_HOME指向Spark的安装目录(因为winutils在里面),这步在Windows上跑PySpark特别重要,很多人栽在这。检查Anaconda环境的兼容性:你用的是Anaconda的Python环境,要确认PySpark的版本和Python版本兼容,比如Spark 3.5支持Python 3.8-3.11。可以在命令行输入
pip show pyspark看看安装的PySpark版本,要是版本不兼容的话,就卸载重装对应版本:pip uninstall pyspark然后pip install pyspark==3.4.1(选个和你Python匹配的版本)。代码里指定Spark配置(临时解决办法):如果环境变量配置了还是不行,可以在代码里直接指定Java和Spark的路径,比如:
from pyspark import SparkConf, SparkContext conf = SparkConf() \ .setMaster("local[*]") \ .setAppName("test_spark_app") \ .set("spark.driver.extraJavaOptions", "-Djava.home=C:\\Program Files\\Java\\jdk1.8.0_381") \ .set("spark.executor.extraJavaOptions", "-Djava.home=C:\\Program Files\\Java\\jdk1.8.0_381") sc = SparkContext(conf=conf) print(sc.version) sc.stop()
不过这只是临时方案,还是建议把环境变量配置好更省心。
- 检查文件路径的中文问题:看你的代码文件路径里有中文“第三阶段”“spark基础”,虽然现在很多工具支持中文路径,但PySpark有时候对中文路径的兼容性不太好,建议把代码文件移到纯英文的路径下,比如
D:\pycharm\pythonProject2\stage3\py_spark\spark_basic.py,再试试运行。
备注:内容来源于stack exchange,提问作者user27691493

