sqoop将零位小数导入为0e-22

aurhwmvo  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(292)

当我使用hadoop和sqoop从我的mssql数据库导入一个表,并且该表有十进制列时,任何为零的列(例如0.000000000000..)都保存为“0e-22”。
这是相当痛苦的,因为当在我的Map中将值强制转换为十进制或reduce时,它会引发异常。因此,我要么将该列导出为varchar,要么将其转换为一个检查。两者都不理想。
以前有没有人遇到过这种情况并找到了工作?
谢谢

yrefmtwq

yrefmtwq1#

我建议尽快发布sqoop1.4.3,在那里我们修复了sqoop-830,这可能也会对您有所帮助。

hi3rlvi2

hi3rlvi22#

这是一个奇怪的情况,有一些解决办法。你可以重写你的表,即。

INSERT OVERWRITE TABLE your_table
SELECT columns_no_need_for_change , CASE WHEN possible_bad_column = '0E-22' THEN '0' ELSE possible_bad_column END FROM your_table

告诉我们你成功与否。德国劳埃德!

相关问题