빅데이터공부하기 40번째글입니다.

벌써!!! 많이 공부했죠 우리 ^---^

 

이번공부의 주제는 mapper 클래스입니다.

오늘도 열심히 빅데이터를 공부해볼까용?!!

GoGo ~~!!

 

Mapper 클래스

 

org.apache.hadoop.mapreduce.Mapper로 부터 계승

 

extends Mapper<K1, V1, K2, V2>

처음 2개는 입력레코드의 키, 밸류의 타입 (K1, V1)

다음 2개는 출력레코드의 키, 밸류의 타입 (K2, V2)

- reducer입력레코드의 키, 밸류의 타입과 일치

 

Job 클래스의 setMapperClass로 지정 (프레임웍에 알린다)

 

코어는 바로 Mapper의 map 메소드

- 주어진 입력레코드를 *개의 출력레코드로 변환

- 출력레코드를 프레임웍으로 내보내는데 Context클래스의 write메소드를 사용

 


Public static class Map extends Mapper<Long Writable, Text, Text, LongWritable>

private final static LongWritable one = new LongWritable(1);

private text word= new Text();

 

public voidmap(LongWritable key, Text value, Context context)

throws IOException, InterruptedException

{

String line = value.toString();

String Tokenize tokenizer = new String Tokenizer(line, "trnf,.\"");

while(tokenizer.hasMoreTokens());

context.write(word, one);

}


1. 입력레코드의 키, 밸류 타입은 인풋포뱃이 결정하며 앞서 main에서 보면 TextlnputFormat을 사용. LongWritable.Text등은 자바의 Long과 String 타입의 하둡용랩퍼.

 

2. 출력레코드의 키, 밸류 타입은 Text, LongWritable인데 이건 프레임웍에 의해 소팅, 셔플링이 된다음에 reducer로 넘어간다

 

3. map 메소드내에서 사용할 변수를 두개 미리 만들어둔다.

 

4. map 메소드는 밸류로 넘어온 텍스트 파일의 라인을 StringTokenizer클래스를 이용해 파싱한 다음 각 단어들을 하나씩 프레임웍으로 넘긴다 (키는 단어, 밸류는 1)

 

 

 

 

 

+ Recent posts