...
[DECIMAL_PRECISION_EXCEEDS_MAX_PRECISION] Decimal precision 8 exceeds max precision 7.日志显示出Decimal的最大精度是7,然后出现了精度8位数。实际上Spark的Decimal类型最大位数是38位,引擎也未提供接口修改位数限制。注意到客户的数值是通过sql计算的,并没有指定计算结果的类型,有可能spark自行推导了结果类型,超出了推导类型的限制。解决办法:
解决办法
在SQL中显示地指定结果的类型,比如SELECT CAST(123.45 AS DECIMAL(38,2)),显示地指定为 DECIMAL(38,2)类型。