2009-12-07 4 views
1

MapReduce 작업 (특히 관련 Hadoop)을 작성하려면 map()reduce() 함수를 정의해야하며 둘 다 일련의 키/값 쌍을 생성해야합니다. 키 및 값의 데이터 유형은 응용 프로그램에서 자유롭게 정의 할 수 있습니다.동일한 유형의 키/값 쌍을 map() 및 reduce()로 반환해야합니까?

단어 계산의 표준 예제에서 두 함수는 모두 (string, int) 유형의 쌍을 생성하며 키는 단어이고 값은 발생 횟수를 나타냅니다. 여기에 내가 본 다른 모든 예제와 마찬가지로 출력 된 키와 값 유형이 두 함수간에 일관성이 있습니다.

map()reduce()에 의해 생성 된 키/값 쌍의 유형은 MapReduce의 모든 응용 프로그램 내에서 동일해야합니까? 그렇다면 : 왜?

답변

6

아니요 물론 map의 출력 쌍과 reduce 입력 쌍의 유형은 동일해야합니다. 하나는 다른 하나에 전달되므로 분명합니다.

그러나지도 작업이 문서의 단어를 계산했지만 감소 작업이 평균을 계산하는 경우와 같이 다른 유형의지도를 출력하는 작업을 줄일 수는 있습니다 단어 빈도. 이 경우 맵은 정수를 방출하지만 감소하면 부동 소수점이 방출됩니다.

1

출력 및 축소 출력이 다를 수 있습니다. 그러나 응용 프로그램에 자신이 있다고 알릴 필요가 있습니다.

setOutputKeyClass() 및 setOutuptValueClass() 메소드는 맵과 출력 함수의 출력 유형을 제어합니다. 이러한 출력 유형은 종종 동일합니다.

다른 경우에는 setMapOutputKeyClass() 및 SetMapOutputValue를 사용하여 맵 출력 키/값 유형을 각각 설정할 수 있습니다.

관련 문제