VS Code使用pytest运行Pyspark测试卡在SparkSession创建如何解决
Windows本地PySpark创建SparkSession卡顿无报错解决方案
必装基础依赖检查
- Java环境配置:Spark 3.x仅兼容Java 8/11版本,禁止使用Java 17及以上版本。需正确配置
JAVA_HOME系统环境变量为JDK安装根路径,同时将%JAVA_HOME%\bin添加到系统PATH中。可打开cmd执行java -version和echo %JAVA_HOME%验证配置有效性,注意JDK路径不能包含中文、空格或特殊字符。 - Winutils适配包配置:Windows系统运行Spark必须安装对应版本的Winutils工具,版本需和Spark内置的Hadoop版本完全匹配。配置要求:
- 新建
HADOOP_HOME系统环境变量,值为Winutils解压后的根路径 - 将
%HADOOP_HOME%\bin添加到系统PATH中 - 将
%HADOOP_HOME%\bin下的hadoop.dll文件复制到C:\Windows\System32目录,避免权限调用异常
- 新建
- PySpark版本一致性:通过pip安装的
pyspark库版本必须和本地下载的Spark二进制包版本完全一致,可分别执行pip show pyspark和spark-submit --version核对版本号。
代码参数调整
卡顿大多由Windows网卡多IP解析异常导致,可在SparkSession创建时新增固定配置,调整后的示例代码如下:
from pyspark.sql import SparkSession import pytest # 提前手动创建C:\spark_temp目录,路径确保无中文、空格 def test_poc(): spark_session = SparkSession.builder \ .appName("local_pytest_test") \ .master('local[1]') # 先用单核心测试,排查多线程资源冲突 .config("spark.driver.host", "127.0.0.1") # 固定绑定本地回环地址,避免IP解析卡顿 .config("spark.local.dir", "C:/spark_temp") # 自定义临时文件目录,避免默认目录权限问题 .getOrCreate() # 你的业务测试逻辑 spark_session.stop() # 测试结束主动关闭会话,避免残留进程阻塞后续运行
快速排查方法
暂时跳过VSCode的pytest调试面板,直接打开系统终端进入测试文件所在目录,执行pytest 你的测试文件名.py -s,直接查看终端输出的运行日志,可快速定位卡顿的具体环节。
内容的提问来源于stack exchange,提问作者user9297554
相关产品推荐
相关产品推荐

