PySpark DataFrame首次运行报错:[WinError 2] 系统找不到指定文件
PySpark [WinError 2] 系统找不到指定文件问题排查与解决
问题代码
import findspark findspark.init() findspark.find() from pyspark.sql import SparkSession from pyspark.sql.types import * spark=SparkSession.builder.master("local[*]").appName("SparkByExamples.com").getOrCreate(); data2 = [(1, 'Smith', 2018, 10, 'M', 3000), (2, 'Rose', 2010, 20, 'F', 4000), (3, 'Williams', 2010, 10, 'M', 1000),(4, 'Jones', 2005, 10, 'M', 2000), (5, 'Brown', 2010, 40, 'F', 3200)] schema = StructType([ StructField("Emp_id", StringType(), True), \ StructField("Emp_name", StringType(), True), \ StructField("Year joined", IntegerType(), True), \ StructField("Emp_dep_id", StringType(), True), \ StructField("Gender", StringType(), True), \ StructField("Salary", IntegerType(), True) ]) df_emp = spark.createDataFrame(data=data2, schema=schema) df_emp.show()
报错信息
Traceback (most recent call last): File "C:\Users\228091\PycharmProjects\Project1\task2.py", line 9, in <module> spark = SparkSession.builder.master("local[*]").appName("SparkByExamples.com").getOrCreate(); File "C:\spark1\python\lib\pyspark.zip\pyspark\sql\session.py", line 228, in getOrCreate File "C:\spark1\python\lib\pyspark.zip\pyspark\context.py", line 384, in getOrCreate File "C:\spark1\python\lib\pyspark.zip\pyspark\context.py", line 144, in __init__ File "C:\spark1\python\lib\pyspark.zip\pyspark\context.py", line 331, in _ensure_initialized File "C:\spark1\python\lib\pyspark.zip\pyspark\java_gateway.py", line 101, in launch_gateway File "C:\Program Files\Python310\lib\subprocess.py", line 969, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "C:\Program Files\Python310\lib\subprocess.py", line 1438, in _execute_child hp, ht, pid, tid = _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2] 系统找不到指定文件 Process finished with exit code 1
错误原因
该错误是PySpark启动Java网关时找不到依赖可执行文件导致的,核心诱因包括:
- 未安装Spark兼容的JDK(要求8或11版本),或未配置
JAVA_HOME系统环境变量 findspark未指定Spark安装路径,无法定位Spark核心启动文件- 系统未配置
SPARK_HOME环境变量,PySpark无法自动识别Spark位置
解决方法
1. 安装并配置JDK
- 下载OpenJDK 8或11版本,安装到无空格的路径(如
C:\Java\jdk1.8.0_391) - 配置系统环境变量:
- 新建
JAVA_HOME变量,值为JDK安装根目录 - 在
Path变量中添加%JAVA_HOME%\bin
- 新建
- 验证配置:打开命令提示符,输入
java -version和javac -version,能正常输出版本即配置成功
2. 正确配置Spark路径
- 确保Spark安装路径无空格(如
C:\spark,避免C:\Program Files\spark这类路径) - 修改代码中
findspark.init()的调用,指定Spark实际安装路径:findspark.init("C:\spark") # 替换为你的Spark安装根目录 - 或者配置系统环境变量
SPARK_HOME,值为Spark安装根目录,这样findspark.init()无需传参也能自动识别
3. 验证环境并重新运行
- 打开命令提示符,输入
pyspark,能进入Spark交互环境则说明配置有效 - 重新运行你的代码,即可正常创建SparkSession并显示DataFrame
内容的提问来源于stack exchange,提问作者Akhil Das
相关产品推荐
相关产品推荐

