PySpark调用randomSplit切分DataFrame报Integer转Double错误怎么解决
错误原因
该报错与DataFrame的Schema无关,核心问题是你调用randomSplit()方法时传入的权重参数类型不符合要求:
PySpark的randomSplit()第一个参数要求传入元素为浮点型的列表,你传入的[70, 30]是整数列表,底层Scala运行时无法将整数自动转换为期望的Double类型,因此抛出类型转换异常。
修复方案
只需将权重列表的元素改为浮点型即可,有两种常用写法:
- 按比例写小数权重(推荐,可读性更强)
splits = list(frozen_df.randomSplit([0.7, 0.3], 13))
- 直接给整数加后缀转成浮点型
splits = list(frozen_df.randomSplit([70.0, 30.0], 13))
两种写法效果完全一致,随机种子参数13为整数符合方法要求,无需修改。
内容的提问来源于stack exchange,提问作者user3476463
相关产品推荐
相关产品推荐

