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

解决PySpark转Pandas时ConnectionRefusedError[WinError10061]错误

解决PySpark转Pandas时的ConnectionRefusedError问题

问题根源

你遇到的ConnectionRefusedError: [WinError 10061],主要是因为手动创建SparkContext和SparkSession导致上下文冲突——新版本Spark中SparkSession会自动管理SparkContext,重复初始化会引发网络连接异常;另外toPandas()需要把分布式数据拉取到Driver节点,若Driver的网络配置或资源不足也会触发该错误。

具体修复方案

1. 移除冗余的SparkContext初始化,统一用SparkSession管理

你的代码同时初始化了SparkContext和SparkSession,这是冲突的核心原因。修改后的代码如下:

from pyspark.sql import SparkSession
import pandas as pd

# 直接通过SparkSession初始化,内置管理SparkContext
spark = SparkSession.builder \
    .master("local[1]") \
    .appName("test_name") \
    .config("spark.driver.host", "127.0.0.1") \
    .getOrCreate()

# 文件路径
path = "./data/fhvhv_tripdata_2022-10.parquet"
# Parquet自带Schema元数据,无需设置header=True(该选项仅适用于CSV文件)
data = spark.read.parquet(path)

# 转换为Pandas DataFrame
pd_df = data.toPandas()

2. 增加Driver内存配置(针对大数据量场景)

如果Parquet文件数据量较大,toPandas()拉取数据时可能因Driver内存不足间接引发连接问题,可在配置中增加内存限制:

spark = SparkSession.builder \
    .master("local[1]") \
    .appName("test_name") \
    .config("spark.driver.host", "127.0.0.1") \
    .config("spark.driver.memory", "4g")  # 根据本机内存调整,比如4G、8G
    .getOrCreate()

3. 检查本地网络与端口配置

  • 确保本地防火墙未拦截Spark Driver端口,也可手动指定端口:.config("spark.driver.port", "4040")
  • 尝试将127.0.0.1替换为localhost测试连接
  • 确认4040端口未被其他程序占用

4. 验证Spark环境兼容性

  • 确保PySpark版本与Python版本匹配(如PySpark 3.x对应Python 3.7+)
  • 执行spark.sparkContext.getConf().getAll()查看配置,确认spark.driver.host已正确设置为本地地址

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:30:22