You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark独立应用启动报错[WinError 2]:系统找不到指定文件

PySpark启动报错FileNotFoundError的解决办法

你好,我看到你在Windows环境下配置了Java 8、Spark 2.2.1和Hadoop 2.7.5后,运行计算Pi的PySpark代码时遇到了FileNotFoundError: [WinError 2] The system cannot find the file specified的错误,我来帮你分析下问题和解决步骤:

首先看你运行的代码:

import random
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName('MyFirstStandaloneApp')
sc = SparkContext(conf=conf)
NUM_SAMPLES = 20
def inside(p):
    x, y = random.random(), random.random()
    return x*x + y*y < 1
count = sc.parallelize(xrange(0, NUM_SAMPLES)) \
    .filter(inside).count()
print("Pi is roughly %f" % (4.0 * count / NUM_SAMPLES))

收到的报错信息:

Traceback (most recent call last):
  File "sample1.py", line 4, in <module>
    sc = SparkContext(conf=conf)
  File "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyspark\\context.py", line 115, in __init__
    SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
  File "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyspark\\context.py", line 283, in _ensure_initialized
    SparkContext._gateway = gateway or launch_gateway(conf)
  File "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyspark\\java_gateway.py", line 80, in launch_gateway
    proc = Popen(command, stdin=PIPE, env=env)
  File "C:\\ProgramData\\Anaconda3\\lib\\subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "C:\\ProgramData\\Anaconda3\\lib\\subprocess.py", line 997, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

问题原因分析

这个错误在Windows环境下的PySpark中很常见,主要原因有这些:

  1. Java环境变量配置未生效:Spark依赖Java运行环境,如果JAVA_HOME配置错误或者未添加到系统PATH中,Spark找不到Java就会抛出这个错误。
  2. Hadoop的winutils缺失:Spark在Windows上运行需要依赖Hadoop的winutils.exe工具,默认Hadoop安装包(尤其是官网下载的)在Windows下没有这个文件,导致Spark启动失败。
  3. 你的代码还有个小细节问题:Python 3中已经移除了xrange,需要改成range,不然解决完启动问题后还会遇到语法错误。

具体解决步骤

  • 确认Java环境配置正确

    • 检查JAVA_HOME环境变量是否指向Java 8的根目录(比如C:\Program Files\Java\jdk1.8.0_291),注意路径不要包含空格或中文(如果有空格可以用短路径或者加引号,但尽量选无空格的目录)。
    • 将%JAVA_HOME%\bin添加到系统PATH环境变量中。
    • 打开新的命令行窗口(环境变量修改后需要重启终端才会生效),输入java -version和javac -version,如果能正常输出Java版本信息,说明配置没问题。
  • 补充Hadoop winutils工具

    • 下载对应Hadoop 2.7.5版本的winutils(确保版本严格匹配)。
    • 将winutils.exe放到你的Hadoop安装目录的bin文件夹下(比如C:\hadoop-2.7.5\bin)。
    • 配置HADOOP_HOME环境变量指向Hadoop的根目录(C:\hadoop-2.7.5),并将%HADOOP_HOME%\bin添加到系统PATH中。
  • 验证Spark配置

    • 确认SPARK_HOME环境变量指向Spark 2.2.1的根目录,%SPARK_HOME%\bin也添加到PATH。
    • 在新的命令行输入spark-shell,如果能成功进入Spark的Scala交互界面,说明Spark的基础配置没问题。
  • 修正代码中的xrange问题
    将代码里的xrange(0, NUM_SAMPLES)改成range(0, NUM_SAMPLES),因为Python 3中只有range,xrange是Python 2的语法。

完成这些步骤后,再运行你的PySpark代码,应该就能正常启动并计算Pi的值了。

内容的提问来源于stack exchange,提问作者GLalor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:40:09