2017-09-29 5 views
0

일반적인 단어 수 계산 예제와 다른 Hadoop 작업을 공식화하려고합니다. 내 입력 데이터의 형식은 :Mapper()에 ArrayList <String>을 전달하는 Hadoop 작업 공식

makePush,1964 
makePush,459 
makePush,357 
opAdd,2151 
opAdd,257 
opStop,135 

난 이후에 Reducer()에 기능 Mapper() 이러한 전달, 그리고 싶지만, 즉, 사양

Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT> 

을하는 데 문제가 그러면 예를 들어 opAddKEYIN이고 257VALUEIN이됩니다. 결과적으로 모든 opAdd의 합은 KEYOUT이 될 것이며 관련 숫자의 합은 VALUEOUT이 될 것입니다.

그러나 프로그래밍 방식으로 구현하는 방법은 무엇입니까? 이론상 단어 수 (Word Count)의 예와 크게 다르지 않은 것 같습니다. 예를 들어

답변

2

, opAdd는 KEYIN 것, 257은 VALUEIN

아니, 키가 어디에 현재 맵을 지정하는 파일의 오프셋 마커 인 LongWritable, 될 것 작업이 파일을 읽는 중입니다. 당신이 toString().split(",") 데이터를 분리하는 것 opAdd,257의 전체 라인이 될 것

가치가 될 것 텍스트,

+0

내가 다른 노드가 다른 장소에서 파일을 읽을 것이기 때문에 당신이 무얼 어떻게 볼 생각 aha- 그렇지? –

+1

수정하십시오. LongWritable은 모든 맵 작업간에 직렬화되므로 파일 줄 읽기 시작 위치를 알 수 있습니다. –

+0

Hadoop에서''System.out.println ("* 디버깅 *")'에 대한 중간 프로세스 상태에 대해 어떻게 알 수 있습니까?이'log4j'를 사용해야합니까? –