spark精度丢失,导致列查询为null的解决办法

spark decimal列进行计算时,可能丢失精度,在默认情况下[spark.sql.decimalOperations.allowPrecisionLoss]配置为true,会导致精度丢失的列展示为null

一般情况下,修改spark配置即可解决:

  set spark.sql.decimalOperations.allowPrecisionLoss=false

但是在如下例子中还会出现结果列为null的情况:

   IF(column1 IS NULL,0,column1) - IF(column2 IS NULL,0,column2)

去掉多余的IF判断,就能正常获取结果

  column1 - column2

原文地址:https://www.cnblogs.com/wanshiming/p/12807197.html