- @Override
- protected void reduce(Text key, Iterable<RecordBean> values,Context context)
- throws IOException, InterruptedException {
- RecordBean[] beans = new RecordBean[2];
- Iterator<RecordBean> iter = values.iterator();
- int i = 0;
- while(iter.hasNext()){
- beans[i] = iter.next();
- mos.write("info", beans[i].getKeyString(),beans[i].getCompString() + "-" +beans[i]);
- //这里输出,很明显其中日期是不一样的
- //13755556666 changchun20140202haha24-13755556666|changchun|20140202|haha|24
- //13755556666 changchun20140101haha24-13755556666|changchun|20140101|haha|24
- i = i+1;
- }
- if(beans.length == 2 && beans[0].equals(beans[1])){
- mos.write("same",beans[0].getKeyString(),beans[0]);
- mos.write("same",beans[1].getKeyString(),beans[1]);
- //但在这里有一样了,这是为什么?
- //13755556666 13755556666|changchun|20140101|haha|24
- //13755556666 13755556666|changchun|20140101|haha|24
- }else{
- mos.write("unsame", beans[0].getKeyString(),beans[0]);
- }
- }
复制代码
需求是这样的,每个redude会输入1-2条记录,
如果2条记录相等,输入到一个same文件里面。
如果不相等,输入到一个unsame文件里面。
但是很诡异的问题出现了,在iter给RecordBean赋值的时候,两条记录是不一样的。
但在下面做判断输出的时候,输出的记录是一样的?
why?搞不明白了?多谢各位大神,给研究啊研究啊!
|