PyCharm运行PySpark脚本提示路径找不到且程序挂起,但命令行可正常启动的问题求助
PyCharm运行PySpark程序提示找不到路径且挂起的排查方案
首先先明确你的问题场景和已做的尝试:
我可以通过命令提示符正常启动pyspark,但在PyCharm中运行编写的程序时出现如下错误:
C:\Dev\Python\python.exe C:/Dev/programs/may/test_sparky.py 系统找不到指定的路径。 *.. <程序在此处永久挂起..*
你已经做了这些操作:
- 通过pip安装了pyspark
- 先后尝试过Spark 3.0.0+Winutils 3.0.0,目前降级为Spark 3.0.1+winutils.exe 2.7.1
- 命令行能正常启动pyspark,系统环境变量配置如下:
- JAVA_HOME:
C:\Program Files\Java\jdk1.8.0_331 - SPARK_HOME:
C:\Users\may\AppData\Roaming\Python\Python310\site-packages\pyspark - HADOOP_HOME:
C:\Dev\Hadoop - PATH包含:
....C:\Dev\Python;C:\Dev\Python\Scripts; C:\Users\may\AppData\Roaming\Python\Python310\site-packages\pyspark\bin; C:\Program Files\Java\jdk1.8.0_331\bin;C:\Program Files (x86)\sbt\bin; C:\Dev\Hadoop\bin ....
- JAVA_HOME:
当前版本信息:
- Spark版本:
C:\Dev>pyspark --version Welcome to ____ __ / __/__ ___ _____/ /__ _\ \ / _ \/ _ `/ __/ '_/ /___/ .__/\_,_/_/ /_/\_\ version 3.0.1 /_/ Using Scala version 2.12.10, Java HotSpot(TM) 64-Bit Server VM, 1.8.0_331 Branch HEAD Compiled by user ubuntu on 2020-08-28T07:36:48Z Revision 2b147c4cd50da32fe2b4167f97c8142102a0510d Url https://gitbox.apache.org/repos/asf/spark.git Type --help for more information.
- Java版本:
C:\Dev>java -version java version "1.8.0_331" Java(TM) SE Runtime Environment (build 1.8.0_331-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.331-b09, mixed mode)
结合这些信息,咱们可以从以下几个方向排查解决:
1. 同步PyCharm的环境变量配置
命令行的环境变量和PyCharm的可能没有同步,即使系统变量配置正确,PyCharm可能没加载到:
- 打开PyCharm,进入
Run -> Edit Configurations - 找到你的Python运行配置,切换到
Environment variables选项卡 - 手动添加或确认以下变量:
JAVA_HOME:C:\Program Files\Java\jdk1.8.0_331SPARK_HOME:C:\Users\may\AppData\Roaming\Python\Python310\site-packages\pysparkHADOOP_HOME:C:\Dev\Hadoop- 确保
PATH里包含%SPARK_HOME%\bin和%HADOOP_HOME%\bin(可以直接把这两个路径写进去,避免变量解析问题)
- 点击
Apply后重启PyCharm再尝试运行
2. 确认Winutils的完整性和权限
Winutils是Windows下运行Spark的关键组件,容易出问题:
- 检查
C:\Dev\Hadoop\bin下是否存在winutils.exe,并且是对应2.7.1版本的64位程序(如果你的系统是64位的话) - 右键
winutils.exe,选择属性 -> 安全,确认当前用户有读取和执行权限 - 可以手动在命令行执行
C:\Dev\Hadoop\bin\winutils.exe ls,看是否能正常运行,没有报错
3. 在代码中手动指定Spark配置参数
避免依赖环境变量,直接在代码里初始化SparkContext时指定必要路径:
from pyspark import SparkConf, SparkContext # 初始化配置,手动指定路径 conf = SparkConf() \ .setAppName("TestSpark") \ .setMaster("local[*]") \ .set("spark.hadoop.home.dir", "C:/Dev/Hadoop") \ .set("spark.driver.extraClassPath", "C:/Users/may/AppData/Roaming/Python/Python310/site-packages/pyspark/jars/*") sc = SparkContext(conf=conf) # 测试代码 rdd = sc.parallelize([1,2,3,4]) print(rdd.count()) sc.stop()
4. 检查PyCharm的Python解释器配置
确保PyCharm使用的是你安装pyspark的那个Python环境:
- 进入
File -> Settings -> Project: 你的项目名 -> Python Interpreter - 确认当前解释器路径是
C:\Dev\Python\python.exe(你命令行使用的Python) - 查看已安装的包列表,确认
pyspark存在且版本是3.0.1
5. 清理缓存并重启
有时候缓存会导致奇怪的问题:
- 清理PyCharm缓存:
File -> Invalidate Caches... -> 勾选Clear file system cache and local history -> 点击Invalidate and Restart - 手动删除Spark的临时文件,默认在
C:\tmp\spark-*目录,删除后再尝试运行
内容的提问来源于stack exchange,提问作者May
相关产品推荐
相关产品推荐

