Map器只输出一次值。但当我检查组合器时,值是两次。这对我来说真的很奇怪。
请帮忙。
发送输出的map代码模块:
for(int i = 0; i<alcmapi.size(); i++)
{
int section = 0;
for(int j = 0; j<alcmapj.size(); j++)
{
if(!alcmapi.get(i).getid().equals(alcmapj.get(j).getid()))
{
int fi = Integer.parseInt(alcmapi.get(i).getField());
int fj = Integer.parseInt(alcmapj.get(j).getField());
ArrayList<CustomMap> al = new ArrayList<CustomMap>();
al.add(new CustomMap(alcmapi.get(i).getid(), fi));
al.add(new CustomMap(alcmapj.get(j).getid(), fj));
if(fi<fj)
{
section = fi;
}
else
{
section = fj;
}
Collections.sort(al);
{
output.collect(new Text(t+" "+al.get(0).getid()), new Text(al.get(1).getid()+" "+section));
}
}
}
}
组合器中:
我看到,当我选中此处时,键对应的值会加倍:
while(values.hasNext()){
String val = values.next().toString();
System.out.println("val:"+val);
}
提前谢谢!
1条答案
按热度按时间odopli941#
看起来你测试了所有元素和其他元素。例如,如果元素3和元素5满足条件,那么您应该为i=3,j=5写一次,为i=5,j=3写一次。
我建议你把你的内环改成: