【问题标题】:How to use spark with large decimal numbers?如何使用带有大十进制数的火花?
【发布时间】:2022-05-05 11:03:22
【问题描述】:

我的数据库有numeric 值,最大为 256 位无符号整数。但是,spark 的 decimalType 有 Decimal(38,18) 的限制。

当我尝试对列进行计算时,会引发异常。

java.lang.IllegalArgumentException:要求失败:十进制精度 39 超过最大精度 38"。

是否有任何第三方库或解决方法可以解决此问题?或者 Spark 是为小于 Decimal(38,18) 的数字设计的?

【问题讨论】:

    标签: java scala apache-spark types


    【解决方案1】:

    如果必须存储为数字类型:

    • cast(value as Double)(可能会丢失精度)
    • cast(value as Decimal(38, 18))(可能溢出)

    如果您的数据不需要参与计算,您可以将其转换为String

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多