本地PyCharm创建SparkSession时报错:'JavaPackage' object is not callable
本地PyCharm创建SparkSession时报错:'JavaPackage' object is not callable
我之前在Windows本地配置PySpark时也遇到过一模一样的错误,这个问题基本都是环境变量设置时机不对或者版本兼容性不匹配导致的,结合你的代码和环境信息,给你几个针对性的解决方案:
1. 调整环境变量设置的顺序(最可能解决你的问题)
你的代码里先调用了findspark.init(),之后才设置JAVA_HOME和SPARK_HOME,但findspark.init()会在执行时读取当前的环境变量来定位Spark和Java,这就导致初始化时根本没读到正确的Java路径!
修改代码,把环境变量设置放在findspark.init()之前:
from pyspark.sql import functions as f from pyspark.sql import SparkSession from pyspark.sql.functions import session_window from pyspark.sql import Window import os import findspark # 先设置所有环境变量 os.environ["JAVA_HOME"] = "C:\\Program Files\\Eclipse Adoptium\\jdk-11.0.22.7-hotspot" os.environ["SPARK_HOME"] = "C:\\spark" # 再初始化findspark findspark.init(os.environ["SPARK_HOME"]) print("Pyspark Imported") spark = SparkSession.builder.appName("CSVEXAMPLE").getOrCreate() print("spark sessions started") print("Spark Version:", spark.version)
2. 确认PySpark与本地Spark版本完全一致
你安装的PySpark是3.5.6,那你本地C:\spark目录下的Spark二进制包必须也是3.5.6版本!PySpark和Spark的主版本、次版本、修订号都要完全匹配,否则会出现Java类加载不兼容的问题,直接触发这个错误。
如果本地Spark版本不对,去Apache Spark官网下载3.5.6的Windows版本,解压后替换C:\spark目录即可,同时重新安装对应版本的PySpark:
pip install pyspark==3.5.6 --force-reinstall
3. 规避Java路径中的空格问题
Windows下路径带空格(比如Program Files)有时候会导致Spark解析Java路径出错,你可以试试把JAVA_HOME换成短路径格式:
os.environ["JAVA_HOME"] = "C:\\Progra~1\\Eclipse Adoptium\\jdk-11.0.22.7-hotspot"
或者直接把JDK文件夹移到没有空格的路径下,比如C:\jdk11.0.22,然后修改JAVA_HOME为这个新路径。
4. 验证虚拟环境的正确性
确保PyCharm确实在使用你配置的.venv虚拟环境:
- 打开PyCharm的
File > Settings > Project: pythonProject > Python Interpreter - 确认选中的是
.venv\Scripts\python.exe - 检查列表里的PySpark版本是否为3.5.6
5. 命令行测试排除PyCharm问题
先脱离PyCharm,在命令行里测试PySpark是否能正常启动:
- 打开命令提示符,进入你的项目目录:
cd C:\Users\pythonProject - 激活虚拟环境:
.venv\Scripts\activate - 输入
pyspark,如果能正常进入Spark Shell并显示Spark版本,说明环境本身没问题,问题出在PyCharm的配置(比如运行配置里的环境变量没同步);如果命令行也报错,那就是环境配置的问题,回到前面的步骤排查。
内容来源于stack exchange
相关产品推荐
相关产品推荐

