一次迁移发现,生产和测试的结果不太一样,生产用的impala,测试用hive,同一个值,在转换为decimal(8,2)时,impala没有四舍五入,hive有,查看日志发现impala出现了警告:
WARNINGS: UDF WARNING: String to Decimal parse failed
UDF WARNING: String to Decimal parse failed
查了很久才发现是因为impala配置文件里配置了DECIMAL_V2=FALSE
使用hue测试了一下
SET DECIMAL_V2=FALSE;
select cast(nvl(cast('111.7876735' as double),0) as decimal(8,2))
结果是111.78,而不是111.79。但是impala里不配置这个参数就会报错,看到的可以检查检查,或许新版本就解决了呢。