복붙노트

[HADOOP] 어떻게 outputcollector 작품?

HADOOP

어떻게 outputcollector 작품?

나는 기본 맵이 매퍼 또는 감속기를 정의하지 않는 일을, 감소 분석을 시도했다. IdentityMapper IdentityReducer 및 사용 하나, 즉 자신을 명확하게하기 위해 난 그냥 내 정체성 감속기를 썼다

public static class MyIdentityReducer extends MapReduceBase implements Reducer<Text,Text,Text,Text> {
        @Override
        public void reduce(Text key, Iterator<Text> values,
                OutputCollector<Text, Text> output, Reporter reporter)
                throws IOException {
            while(values.hasNext()) {
                Text value = values.next();
                output.collect(key, value);
            }
        }   
    }

내 입력 파일했다 :

$ hadoop fs -cat NameAddress.txt
Dravid Banglore
Sachin Mumbai
Dhoni Ranchi
Dravid Jaipur
Dhoni Chennai
Sehwag Delhi
Gambhir Delhi
Gambhir Calcutta

I was expecting
Dravid Jaipur
Dhoni Chennai
Gambhir Calcutta
Sachin Mumbai
Sehwag Delhi

I got
$ hadoop fs -cat NameAddress/part-00000
Dhoni   Ranchi
Dhoni   Chennai
Dravid  Banglore
Dravid  Jaipur
Gambhir Delhi
Gambhir Calcutta
Sachin  Mumbai
Sehwag  Delhi

나는 집계가 다음 감속기의 while 루프에서 프로그래머에 의해 수행되며, 이후 outputcollector에 기록한다는 의견이었다. 내가 outputcollector에 전달 된 감속기의 열쇠는 항상 내가 집계하지 않는 경우 고유 & 여기 이후 있다는 느낌이었다, 마지막 키의 값이 이전 값을 대체합니다. 명확하지 않는 경우. 사람이 어떻게 작동하고 모든 키를 처리하는 방법, 나에게 outputcollector의 더 나은 INSITE을 전해 주 시겠어요. 나는 하둡 SRC 코드 outputcollector의 많은 구현을 참조하십시오. 난 내 자신의 outputcollector 내가 기대하고 무엇을 할 수 쓸 수 있습니까?

해결법

  1. ==============================

    1.키는 감속기에 대한 고유하고 감속기를 호출 할 때마다 고유의 키 값과 해당 키와 관련된 모든 값의 반복 가능한 있습니다. 당신이하는 일은 전달 된 모든 값을 통해 반복하고 각각을 쓰고있다.

    키는 감속기에 대한 고유하고 감속기를 호출 할 때마다 고유의 키 값과 해당 키와 관련된 모든 값의 반복 가능한 있습니다. 당신이하는 일은 전달 된 모든 값을 통해 반복하고 각각을 쓰고있다.

    그래서 귀하의 경우 데이터보다 적은 수의 호출이있을 수 있다는 문제가되지 않습니다. 당신은 여전히 ​​모든 값을 쓰고 끝.

  2. from https://stackoverflow.com/questions/12763478/how-outputcollector-works by cc-by-sa and MIT license