Hive出现BigDecimal wourld overflow supported range问题
Hive出现BigDecimal wourld overflow supported range问题
问题在于BigDecimal设置的精度太小或太大了,例如2^32 - 1或者-2^32
hbase shell插入的基础类型数据通过bigdecimal查看数据位数可以看到数据位数变得很大
怀疑是插入了类似数据导致了这个问题
真正的bigDecimal数据正常状态下查看是会乱码的
这个问题也和使用的jdk版本也有关系
测试jdk11直接大于MAX_VALUE报错
if (bitsToShiftLong > Integer.MAX_VALUE) {reportOverflow();
}
private static void reportOverflow() {throw new ArithmeticException("BigInteger would overflow supported range");
}
Jdk17计算后大于MAX_MAG_LENGTH报错
if ((long)bitLength() * exponent / Integer.SIZE > MAX_MAG_LENGTH) {reportOverflow();
}
而且如果scale很大的话,就就算没有报错,计算也需要耗费很长的时间