Experiences/Hadoop

1-6. Hadoop 첫 프로그램 실습(WordCount) - 2

프로그래머 2012. 8. 28. 17:32

이번엔 기존 파일을 수정해서 공백 토큰만 인식했던 부분을 공백 탭 엔터 . , : ; ? ! [ ] ' 을 인식하게 하고, 

소문자와 대문자를 같은 단어로 인식하면서 네 번 이상 카운트 되는 경우만 출력하도록 처리하는 프로그램을 만들어보자.


# vi 편집기를 이용하던지, 아니면 CentOS xWindow에서 eclipse를 깔아서(http://serapian.pe.kr/200) 수정해도 된다.


수정할 기존파일(playground/src/WordCount.java)을 열고, 아래 그림의 부분과 같이 수정해준다.


#  vi playground/src/WordCount.java



WordCount 예제는 자바의 StringTokenizer를 사용했는데, 추가 설정이 없다면 기본적으로 공백만을 구분자로 사용한다.

여러 가지 구두점을 무시하려면 밑줄친 부분과 같이 넣어주면 된다.

 

StringTokenizer itr = new StringTokenizer(line, " \t\n\r\f,.:;?![]'");

 

이렇게 나뉘어진 토큰들은 하둡에서 Text 객체로 변환된다. (하둡에서는 String 대신 Text라고 하는 클래스가 사용된다.) 그리고 이 프로그램에서는 대문자와 소문자를 구분하지 않기로 했기 때문에, Text 객체로 변환하기 전에 모든 문자를 소문자로 변환해준다.

 

word.set(itr.nextToken().toLowerCase());

 

마지막으로 네 번 이상 카운트되는 경우만 출력하기로 했기 때문에 아래 그림과 같이 추가 해준다.

 

 

if (sum > 4) context.write(key, result);

 

세 가지를 모두 수정한 후에, 이전에 자세히 다뤘던(왜 다뤄야했는지에 대한 이유이다.) 컴파일 후 jar로 압축해서 재 실행을 해보면, 아래와 같은 결과를 얻을 수 있다. (실행은 이제 여러분 몫이다.)

 

# more output/*

 

 

이렇게 하둡을 간단히 소개하고, MapReduce에 대해서 알아보고, 또한 3가지 하둡 실행 모드 중 Standalone을 실행해보고 직접 느껴보았다.

어렵기만하고, 사실 실행이 반이라고 말하는 Hadoop, 많이 고생했지만, 그 끝에 느껴지는 짜릿함이 이 하둡을 계속 만지게 하는 원동력이 된다.

많이 배우고 있다는 생각이 들고, 이러한 기술들이 참 대단하다는 생각이 들기도 하다.

시작이지만, 더 열심히 해야겠다!


'Experiences > Hadoop' 카테고리의 다른 글

2-2. 하둡의 실행  (1) 2012.08.31
2-1. 하둡의 구성요소  (6) 2012.08.29
1-5. Hadoop 첫 프로그램 실습(WordCount)  (2) 2012.08.28
1-4. 하둡을 위한 개발환경 설정하기  (2) 2012.08.28
1-3. MapReduce의 이해  (0) 2012.08.27