MapReduce?
- 하둡 데이터 처리 프레임워크
- 대용량 데이터를 분산 처리
- Map과 Reduce라는 함수 기반으로 주로 구성
- 데이터를 특정 크기의 블록으로 나누고 각 블록에 대해 Map Task와 Reduce Task를 수행
- mapper->reducer
- <key, value> dataset의 변환으로 진행
Mapper
-처리한 데이터를 <key, value> 로 묶어줌
-output: <key, value>
public static class Map extends Mapper<T, T, T, T>{
map output key type, map output value type>{
public void map(T key, T value, Context context) {
//map 함수 정의
}
}
<T, T, T, T> : <input key, input value, output key, output value> 각각의 타입 지정
Shuffle
hadoop이 같은 key를 갖고 있는 data들을 모아 list로 만들어줌
Reducer
-같은 key 값을 같는 data list 처리 및 원하는 데이터 추출
-input: <key, [value]> output: <key, value>
public static class Reduce extends Reducer <T, T, T, T>{
public void reduce(T key, Iterable<T> values, Context context) {
//reduce 함수 정의
}
}
<T, T, T, T> : <Input key, Input value, Output key, Output value>
*Reducer의 Input key type는 Mapper의 Output key type와 같음
*Reducer의 Input value type는 Mapper의 Output value type와 같음
Hadoop의 기본 타입
Text | toString() ->String |
IntWritable | get() -> 각 타입 |
LongWritable | |
FloatWritable | |
BooleanWritable | |
ArrayWritable | |
NullWritable |
ex)
String str = "String Type";
Text txt = new Text(str); //Text type 객체 생성
//txt.set(str)로 세팅할 수도 있음
System.out.println(txt.toString()); //String 반환
IntWritable one = new IntWritable();
one.set(1);
int val = one.get();
'데이터 > 데이터 엔지니어링' 카테고리의 다른 글
하둡(Hadoop) (0) | 2023.05.11 |
---|