실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.
Reducer 클래스 설명
Reducer 클래스
org.apache.hadoop.mapreduce.Reducer로부터 계승
extends Reducer<K1, V1, K2, V2>
처음 2개는 입력레코드의 키,밸류의 타입 (K1,V1)
mapper 출력레코드의 키,밸류의 타입과 일치
다음 2개는 출력레코드의 키,밸류의 타입 (K2,V2)
이 타입들은 main함수에서 Job클래스의 setOutputKeyClass setOutputValueClass로 지정한 타입과 일치해야함.
Job클래스의 setReducerClass로 지정 (프레임웍에 알린다)
코어는 바로 Reducer의 reduce 메소드
밸류는 V2 타입의 리스트이며 이를 *개의 출력레코드로 변환
출력레코드를 프레임웍으로 내보는데 Context 클래스의 write메소드를 사용.
출력레코드가 어떻게 저장되느냐는 main함수에서 호출한 Job 클래스의 setOutputFormatClass 메소드에서 지정한 출력타입에 의해 결정.
public static class Reduce extends Reducer<Text, LongWritable, Text, LongWritable> {
private LongWritable sumWritable = new LongWritable();
public void reduce(Text key, Iterable<LongWritable> values, Context context)
throws IOException, InterruptedException {
long sum = 0;
for (LongWritable val : values) {
sum += val.get();
}
sumWritable.set(sum);
context.write(key, sumWritable);
}
}
1. 입력레코드의 키,밸류 타입은 mapper에서 사용한 키,밸류타입에 의해 결정 2. reduce 메소드에서 사용할 변수를 미리 하나 만들어둔다.
3. reduce 메소드로 넘어오는 밸류 필드는 리스트타입이며 mapper단에서 같은 키값을 갖는 밸류들이 리스트형태로 묶여진 것이다. 리스트내의 원소들의 값을 합한 다음 (결국 주어진 단어가 나타난 회수를 카운트하는 셈) 단어를 키로 지정하고 합을 밸류로 지정하여 프레임으로 넘긴다. 이 출력레코드는 지정된 출력포맷에 맞춰 앞서 지정된 HDFS 위치에 저장된다 (Job 클래스의 setOutputPath 메소드).
실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.
'빅데이터 > 빅데이터R' 카테고리의 다른 글
빅데이터 R-Hadoop 실무과정] (0) | 2016.10.23 |
---|---|
빅데이터 R-Hadoop 실무과정] (0) | 2016.10.23 |
빅데이터 R-Hadoop 실무과정] (0) | 2016.10.16 |
빅데이터 R-Hadoop 실무과정] (0) | 2016.10.16 |
빅데이터 R-Hadoop 실무과정] (0) | 2016.10.16 |