PyCharm运行PySpark程序遇双异常:路径找不到及Java网关启动失败
解决PySpark运行时的路径错误与Java Gateway异常问题
我来帮你一步步排查并解决这两个棘手的问题:
1. 「系统找不到指定的路径」问题根源
你代码里的路径 D:\discuss\text.txt 藏着一个容易忽略的Python语法坑:反斜杠 \ 在Python中是转义字符,\t 会被自动解析成制表符,导致实际传递给Spark的路径变成了 D:\discuss\ext.txt(中间多了个看不见的制表符),系统自然找不到目标文件。
解决这个问题有三种可靠方式:
- 使用双反斜杠转义:
filePath = "D:\\discuss\\text.txt" - 使用原始字符串(在字符串前加
r,让Python不解析转义字符):filePath = r"D:\discuss\text.txt" - 使用正斜杠(跨平台兼容性更好):
filePath = "D:/discuss/text.txt"
2. 「Java gateway process exited before sending the driver its port number」异常解决
这个错误说明PySpark无法正常启动依赖的Java虚拟机,通常是以下原因导致:
- 未安装适配的Java环境:Spark 3.x版本推荐使用Java 8或Java 11(不要用Java 17及以上版本,容易出现兼容性问题),先确认你已安装对应版本的JDK。
JAVA_HOME环境变量未正确配置:- 找到你的JDK安装路径(比如
C:\Program Files\Java\jdk1.8.0_301) - 在系统环境变量中新建
JAVA_HOME变量,值填写上述路径 - 将
%JAVA_HOME%\bin添加到系统Path环境变量中
- 找到你的JDK安装路径(比如
- PyCharm未读取到环境变量:如果是刚配置的环境变量,需要重启PyCharm让它生效;也可以在PyCharm的「Run Configuration」中手动添加
JAVA_HOME环境变量。
修正后的完整可运行代码
from pyspark import SparkConf, SparkContext # 显式配置SparkConf,避免自动配置的潜在问题 conf = SparkConf().setMaster("local").setAppName("Spark_demo") sc = SparkContext(conf=conf) # 用原始字符串解决路径转义问题 filePath = r"D:\discuss\text.txt" print(sc.textFile(filePath).first()) # 记得关闭SparkContext,避免资源泄漏 sc.stop()
内容的提问来源于stack exchange,提问作者Big_Data
相关产品推荐
相关产品推荐

