You need to enable JavaScript to run this app. Google Colab中PySpark使用randomSplit()出现Py4JJavaError如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Google Colab中PySpark使用randomSplit()出现Py4JJavaError如何解决

PySpark randomSplit 类型转换错误解决方案

错误根因

该报错是PySpark 2.1与Python3的适配问题:randomSplit方法的拆分权重参数要求传入浮点型数组,Python3不会自动将整数隐式转换为浮点数,你传入的整数列表[6, 2, 2]传递到Scala底层时出现类型不匹配,触发类型转换异常。

修复方法

两种修复方式都可直接解决问题:

  • 直接将拆分比例改为浮点型,保留你要的6:2:2拆分比例
  • 用列表推导式统一将整数比例转换为浮点型,适配比例动态调整的场景

修改后的参考代码如下:

# 写法1:直接使用浮点型比例
train, validation, test = movie_ratings_spark.randomSplit([6.0, 2.0, 2.0])

# 写法2:自动转换为浮点型,适合动态调整比例的场景
# split_weights = [6, 2, 2]
# train, validation, test = movie_ratings_spark.randomSplit([float(w) for w in split_weights])

# 原有缓存逻辑无需修改
train.cache()
validation.cache()
test.cache()

环境适配补充(Colab环境可选)

如果后续还有其他PySpark版本兼容问题,可在Colab中执行以下命令升级PySpark版本,更高版本的PySpark已经修复了该参数类型适配问题:

!pip install pyspark==3.4.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 17:48:03