您的位置:首页 > 运维架构

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

2016-12-30 17:30 253 查看
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了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux sqoop hive hdfs oracle
相关文章推荐