我正在尝试将数据从sas环境发布到远程hadoop/hive数据库(作为序列文件)。我正在执行一些基本测试,从业务用户那里获取一些源数据,并使用一个数据步骤写入hadoop库。
我收到错误,表明第x行的值超出范围。
例如:
ERROR: Value out of range for column BUY_RT1, type DECIMAL(5, 5). Disallowed value is: 0.
源数据的数字格式为 6.5
,实际值为 .00000
.
为什么是 .00000
超出范围?hadoop的格式需要是 DECIMAL(6, 5)
?
当值为 0.09
:
ERROR: Value out of range for column INT_RT, type DECIMAL(5, 5). Disallowed value is: 0.09
1条答案
按热度按时间xxhby3vn1#
您可能需要检查sas中的实际值。如果sas中的某个数值应用了格式,那么无论您在哪里输出该数值,您都会看到该数值的格式化(可能是四舍五入)版本,但是由于格式的原因,底层的数值可能仍然有您看不到的更重要的数字。
例如,您说源数据的格式为6.5,“实际值”为0.00000;你确定这是实际值吗?要进行检查,您可以尝试将该值与文本0进行比较,或者使用不同的格式(如best32)将该值放入sas日志(如
put BUY_RT1 best32.;
).如果这是一个问题,解决方法是正确地舍入源数值,而不是仅仅应用一种格式。