time:2016/12/29
场景:将hive中的数据导出到oracle数据库中
遇到的问题:
使用oozie跑job的时候,一直处于running状态。实际上数据量很小,而且语句也不复杂。
查看日志发现mapreduce卡在reduce阶段,如图:
map100% reduce0%!
此时我首先想到的是集群资源问题,因为这是公司测试环境,上面跑的任务太多。于是就放着等。过了很久仍然没有动静(排除跑的过慢问题);
中间重新跑了job,没用(排除偶然卡死问题);
让管理员清理了下系统磁盘空间。因为磁盘使用率已经达到了96%。同时跑了下其他的脚本发现可以跑(排除环境问题);
把job放到了开发环境上跑,发现一下就跑过去了(排除了脚本问题);
此时,想到了数据可能有问题。于是我把测试环境的数据放到开发环境,发现果然不能跑。那么就是数据的问题!
最后想到了我hive中null数据是不是在oracle是主键?连上oracle后看到,果然是这个原因。而且不止主键,还有四个字段也都不能为空。

在2016年12月29日,作者遇到一个棘手的问题:使用sqoop从Hive导入数据到Oracle时,任务卡在reduce阶段,始终显示map100% reduce0%。经过一系列排查,包括检查集群资源、清理磁盘空间、在不同环境运行job,最终发现是由于Hive中的null值在Oracle中对应主键和其他不允许为空的字段导致的。解决方案是修正Hive表中这些字段的数据,避免插入非法数据,从而成功完成数据导入。
最低0.47元/天 解锁文章
1063

被折叠的 条评论
为什么被折叠?



