2009-04-22 7 views
0

Apache Hadoop을 배우고 있는데 WordCount 예제 org.apache.hadoop.examples.WordCount을보고있었습니다. 그러나 나는 내가 볼 수있는,이 예제를 이해했다고 변수 org.apache.hadoop.mapred.Mapper에서 'key K1'을 사용하는 것은 무엇입니까?

(...) 
public void map(LongWritable key, Text value, 
        OutputCollector<Text, IntWritable> output, 
        Reporter reporter) throws IOException { 
     String line = value.toString(); 
     StringTokenizer itr = new StringTokenizer(line); 
     while (itr.hasMoreTokens()) { 
     word.set(itr.nextToken()); 
     output.collect(word, one); 
     } 
    } 
(...) 

이 변수의 사용은 무엇

에 사용되지 LongWritable? 누군가가 나를 사용할 수있는 간단한 예제를 줄 수 있습니까? 감사합니다

답변

1

InputFormat이 TextInputFormat이면 Key는 현재 입력 파일의 시작 부분에서 바이트 오프셋입니다.

값은 단순히 해당 오프셋에서의 텍스트 줄입니다.

SequenceFileInputFormat이 사용 된 경우 Key는 '레코드'의 Key 위치에 채워진 것이됩니다. 가치와 동일합니다.

핵심은 키/값 유형이 입력 유형 (텍스트, 시퀀스 파일 등)에 의존한다는 것입니다.

ckw

1

내가 틀릴 수도 있습니다 (지도를 읽었거나 튜토리얼을 줄이지 만 실제 프로젝트에는 아직 사용하지 않았습니다). 그러나 일반적으로 입력 항목의 식별자라고 생각합니다. 예를 들어, 튜플 (파일 이름, 줄 번호). 이 특별한 경우에는 아마 라인 번호 일 것이고 단어 개수에는 관심이 없습니다. 아이디어가, 파일 단위가 아닌 라인 단위로 단어 수를 집계하는 것이라면 (또는 키에 해당 정보가 포함되어있는 경우 여러 파일에 대해) 집계하는 것이 좋습니다.