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

PySpark UDF数值异常:为何float类型计算结果不一致?

问题原因解析:PySpark UDF返回值异常
  • 核心原因是精度不匹配:

    • Python里的float是64位双精度浮点数,有效精度能覆盖15-17位数字,完全能精确存储90125900这个数,所以直接调用函数时返回90125900.0。
    • 而Spark的FloatType是32位单精度浮点数,有效精度只有7-8位,90125900刚好卡在它的精度极限上,没办法精确存储,只能取最接近的可表示值——也就是90125904,所以UDF返回时就出现了这个偏差。
  • 解决办法:
    把UDF的返回类型改成DoubleType,让Spark用双精度存储结果,就能和Python函数直接调用的结果一致了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:54:57