나는 을 구현하는 Pair
이라는 간단한 클래스가 있습니다. 두 개의 필드를 포함하며 MapReduce 프로세스의 Value로 사용됩니다.Hadoop의 감속기에서 이상한 동작
각 키에 대해 쌍의 필드 중 가장 큰 값 (preco)으로 쌍을 찾고 싶습니다.
float max = 0;
String country = "";
for (Pair p : values){
if (p.getPreco().get() > max)
{
max = p.getPreco().get();
country = p.getPais().toString();
}
}
context.write(key, new Pair(new FloatWritable(max), new Text(country)));
다음 코드, 다른 한편으로는,하지 않는 : 감속기에서 다음 코드는 예상 된 결과 생산
Pair max = new Pair();
for (Pair p : values)
if (p.getPreco().get() > max.getPreco().get())
max = p;
context.write(key, max);
두 번째 코드는 각각의 키, 마지막 값, 생산을 그 가장 높은 값이 아닌 입력 파일에서이 값과 연관됩니다.
이 이상한 행동이 나타나는 이유는 무엇입니까?