使用sqoop将HDFS数据导出到RDBMS,map100%reduce0%问题

2016-12-30 19:49:52来源:CSDN作者:liuyongyu111人点击

第七城市

time:2016/12/29

场景:将hive中的数据导出到oracle数据库中
遇到的问题:
使用oozie跑job的时候,一直处于running状态。实际上数据量很小,而且语句也不复杂。
查看日志发现mapreduce卡在reduce阶段,如图:


map100% reduce0%!

此时我首先想到的是集群资源问题,因为这是公司测试环境,上面跑的任务太多。于是就放着等。过了很久仍然没有动静(排除跑的过慢问题);
中间重新跑了job,没用(排除偶然卡死问题);
让管理员清理了下系统磁盘空间。因为磁盘使用率已经达到了96%。同时跑了下其他的脚本发现可以跑(排除环境问题);
把job放到了开发环境上跑,发现一下就跑过去了(排除了脚本问题);
此时,想到了数据可能有问题。于是我把测试环境的数据放到开发环境,发现果然不能跑。那么就是数据的问题!
最后想到了我hive中null数据是不是在oracle是主键?连上oracle后看到,果然是这个原因。而且不止主键,还有四个字段也都不能为空。

在模拟hive表中数据的时候,我使用了null as list_in_id,虽然list_in_id在hive中可以任意值,但是在oracle却是主键!这样的数据
根本无法插入到oracle中,所以reduce一直处于0%.

修改list_in_id字段后,数据终于导出到oracle了,菜鸟心累!




第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台