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

PySpark创建DataFrame时遇PicklingError与RecursionError求助

解决Spark创建DataFrame时的递归序列化错误

问题根源

你碰到的PicklingError+RecursionError,核心是Python 3.14和Spark 3.5.7的序列化工具不兼容。Python 3.14对pickle机制做了底层改动,而Spark 3.5.7自带的CloudPickle还没适配这个新版本,序列化Row对象时触发了无限递归,最终栈溢出。

可行解决方案

1. 降级Python版本(最快解决)

Spark 3.5.x官方支持的Python版本是3.8-3.13,把Python降到3.13或更低版本,重新配置环境后就能正常运行代码。

2. 升级Spark版本

如果不想动Python版本,可以升级Spark到3.5.8及以上或者4.0.x系列,这些版本已经修复了对Python 3.14的兼容性问题。

3. 临时绕开:换一种DataFrame创建方式

不用Row对象,改用普通列表或字典构造数据,避开序列化问题:

# 方案A:用列表组数据
data = [("hello", None, 1)]
df = spark.createDataFrame(data, myManualSchema)

# 方案B:用字典(字段名要和schema对应)
data = [{"some": "hello", "col": None, "names": 1}]
df = spark.createDataFrame(data, myManualSchema)

验证

修改后执行df.show(),应该能正常输出:

+-----+----+-----+
| some| col|names|
+-----+----+-----+
|hello|null|    1|
+-----+----+-----+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 00:05:14