티스토리 뷰

Combiner를 활용

  • 셔플할 데이터의 크기를 줄이기 위해서 사용

  • 맵 태스크와 리듀스 태스크 사이에 데이터를 전달하는 과정을 Shuffle이라 한다.

  • 맵 태스크의 출력데이터는 네트워크를 통해서 리듀스 태스크에 전달된다.

  • 네트워크를 통해서 데이터가 전달되므로 데이터의 크기를 줄일 수 있어야 한다.

  •  

    리듀서가 처리할 데이터들이 줄어든다.

     

     

Combiner 사용 전

  • hdfs 폴더 생성

  • 분석 데이터 hdfs에 넣기

  • AirMapper.java 수정

package mapred.exam.air;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class AirMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
	private final static IntWritable one = new IntWritable(1);
	private Text outputKey = new Text();
	
	@Override
	protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context)
			throws IOException, InterruptedException {
		if(key.get()>0) {
			String[] line = value.toString().split(",");
			if(line!=null & line.length>0) {
				if(!line[15].equals("NA") && Integer.parseInt(line[15]) > 0) {
					outputKey.set(line[0]+"년," + line[1] + "월");
					context.write(outputKey, one);
				}
			}
		}
	}
}
  • 파일 변경시 기존 jar파일을 지우고 jar파일 재 생성

  • 삭제

  • jar파일 생성

  • build path에 추가

  • 매개변수행 실행 등록

  • 실행

  • 결과

  • jobtracker

 

Combiner 사용 후

  • Reducer 변경

  • Driver 변경

  • jar파일 생성 후 build path 에 등록

  • 실행

  • 결과

  • jobtracker

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함