0
映射器僅輸出一次該值。但是當我檢查組合器有兩次的值。這對我來說真的很奇怪。組合器中的映射器輸出加倍
請幫忙。
從那裏輸出被髮送的地圖代碼模塊:
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);
}
提前致謝!
表達'T +」「+ al.get(0).getid()'不依賴於循環索引'j'所以它會每次循環都要輸出。 – rsp
我依賴於我的內部循環:檢查行:ArrayList al = new ArrayList (); al.add(新的CustomMap(alcmapi.get(i).getid(),fi)); al.add(new CustomMap(alcmapj.get(j).getid(),fj)); –
請幫助解決此問題 –