빅데이터공부하기 54_1 Top N

 

이번글부터는 Top N 을 공부하도록하겠습니다.

 

개요

 

앞서 WordCount2의 실행결과에서 가장 높은 빈도수를 갖는 10개의 단어는?

두번째 필드가 숫자로 빈도수를 나타낸다는 전제하에 동작(범용적)

동작방식

- 각 mapper에서 들어오는 레코드들을보고 Top N개만 출력.

- Reducer에서 결국 같은 작업을 반복

- Top N개의 레코드를 가려내기위해 PriorityQueue를 사용

* 모두를 다 저장하고나서 소팅하는 것은 메모리낭비가 너무 큼

- 모든 입력레코드의 처리가 끝난 후에야 Top N개를 알 수 있으므로 Mapper와 Reducer의 cleanup 메소드에서 PriorityQueue의 내용을 출력

 

만일 전체 데이터를 빈도수로 소팅하고 싶다면 다른 전략이 필요

- 하둡제공 예제 프로그램중에 TeraSort라는 것의 구현을 흉내내면됨. 하둡의 벤치마크로 널리 쓰이는 프로그램

- 데이터 샘플링 후 파티션(Partitioner)을 어떤 값 기준으로 나눌지 정하는 형태. 이는 아주 흔히 쓰이는 하둡 잡 실행 전략 중의 하나

 

 

 

+ Recent posts