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

Spark RDD转DataFrame报错:IntegerType无法接收np.NaN

问题原因分析
  • 核心问题是类型不匹配:你用np.NaN作为dip字段的空值,但np.NaN本质是float类型,而Spark的IntegerType只能接受Python原生的int或者表示空值的None,根本不识别float类型的np.NaN——哪怕你在Schema里设了nullable: true,允许为空不代表允许传入错误类型的空值。

  • Spark 2.4.x的类型约束:在Spark 2.4.8这个版本里,数据类型的校验很严格,每种类型只能接收对应类型的有效值或None(对应SQL中的NULL)。np.NaN属于浮点类型,和IntegerType的类型体系不兼容,所以转换时直接触发类型错误。

  • 补充说明:如果是FloatType或者DoubleType字段,用np.NaN是没问题的,但IntegerType不行。要给Integer类型的空字段赋值,必须用Python的None替代np.NaN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:22:46