Sqoop导入零小数为0E-22

时间:2013-03-06 11:56:00

标签: hadoop hive sqoop

当我从MSSQL数据库使用hadoop和sqoop导入表时,该表有十进制列,任何零的列(例如0.000000000000 ..)都保存为“0E-22”。

这非常痛苦,因为在我的Map或Reduce中将值转换为小数时会抛出异常。因此,我必须在尝试强制转换之前将列导出为varchar或检查。两者都不理想。

有没有人遇到过这个问题并得到了解决方法?

由于

2 个答案:

答案 0 :(得分:2)

我建议尽快发布Sqoop 1.4.3,我们修复SQOOP-830  这对你也有帮助。

答案 1 :(得分:0)

这是一个奇怪的案例,有一些解决方法。你可以重写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!