이번엔 기존 파일을 수정해서 공백 토큰만 인식했던 부분을 공백 탭 엔터 . , : ; ? ! [ ] ' 을 인식하게 하고,
소문자와 대문자를 같은 단어로 인식하면서 네 번 이상 카운트 되는 경우만 출력하도록 처리하는 프로그램을 만들어보자.
# vi 편집기를 이용하던지, 아니면 CentOS xWindow에서 eclipse를 깔아서(http://serapian.pe.kr/200) 수정해도 된다.
수정할 기존파일(playground/src/WordCount.java)을 열고, 아래 그림의 부분과 같이 수정해준다.
# vi playground/src/WordCount.java
WordCount 예제는 자바의 StringTokenizer를 사용했는데, 추가 설정이 없다면 기본적으로 공백만을 구분자로 사용한다.
여러 가지 구두점을 무시하려면 밑줄친 부분과 같이 넣어주면 된다.
이렇게 나뉘어진 토큰들은 하둡에서 Text 객체로 변환된다. (하둡에서는 String 대신 Text라고 하는 클래스가 사용된다.) 그리고 이 프로그램에서는 대문자와 소문자를 구분하지 않기로 했기 때문에, Text 객체로 변환하기 전에 모든 문자를 소문자로 변환해준다.
마지막으로 네 번 이상 카운트되는 경우만 출력하기로 했기 때문에 아래 그림과 같이 추가 해준다.
세 가지를 모두 수정한 후에, 이전에 자세히 다뤘던(왜 다뤄야했는지에 대한 이유이다.) 컴파일 후 jar로 압축해서 재 실행을 해보면, 아래와 같은 결과를 얻을 수 있다. (실행은 이제 여러분 몫이다.)
# more output/*
어렵기만하고, 사실 실행이 반이라고 말하는 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 |