摘要:
第一次使用datajoin软件包进行数据连接,是模仿着《Hadoop实战》那本书写的。解决了几个问题(后面说)之后终于job成功启动并且mapper执行完毕,但reduce总是不能执行完成,进度卡在66.67%或99.33%。mapper输出是想要的格式,而且小规模输入数据测试时整个job能成功完成。在查看未完成reduce的状态,发现key不变,“numOfValues”的值却一直在增大,于是就觉得应该是碰到了死循环。我的reducer中没什么会导致死循环的地方,于是查看DataJoinReducerBase的源码,打印了一些信息之后查看的重点就落在了regroup()方法中,最后终于让我找 阅读全文
摘要:
今天发现Reduce中一个双重循环输出有问题,本来是对values的两次循环然后输出各值得交叉连接对,但输出总是不够数量。后来才发现是因为迭代器(Iterable,Iterator)访问了一次某个元素之后即从迭代器中删了这个元素造成。以前一直是一重循环,而且只访问一次,所以一直没发现这个问题。基础问题,汗。。。可以用下列代码验证:List<String> values = new ArrayList<String>(); values.add("E0VzYHYw"); values.add("GUNYQM4"); values.a 阅读全文