当我从我的 MSSQL 数据库中使用 hadoop 和 sqoop 导入一个表并且该表具有十进制列时,任何为零的列(例如 0.000000000000..)都保存为“0E-22”。
这非常痛苦,因为在我的 Map 或 Reduce 中将值转换为小数时会引发异常。因此,我要么必须将列导出为 varchar,要么在尝试强制转换之前进行检查。两者都不理想。
有没有人遇到过这种情况并得到解决?
谢谢
我建议尽快发布 Sqoop 1.4.3,我们在其中修复了 SQOOP-830 ,它也可能对您有所帮助。
这是一个奇怪的案例,有一些解决方法。你可以重写your_table,即
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
让我们知道您是否成功。GL!