시소당
성경전체 단어를 Count하는 작업 시작
기본사항 구현 및 테스트
- 성경 텍스트 파일을 다운 받았다. from Internet
- 단어를 세기 위해 기본적으로 띄어쓰기 및 기타 괄호 등으로 Split 처리함
명령어
bin/hadoop jar /Users/leeseonguk/bigData/wordCount/target/wordcount-1-jar-with-dependencies.jar WordCount ~/bigData/hadoop-wordcount/input/ ~/bigData/hadoop-wordcount/output/
자연어처리 라이브러리 적용하기
위와 같은 기준으로 처리하니 의도한대로 처리가 되지 않음
사랑하고, 사랑하므로, 사랑하니 등 같은 의미를 갖는 단어가 다른 단어로 처리 됨.
따라서 자연어처리 라이브러리를 사용해서 부사, 조사등을 분리한 명사로만 처리하기로 결정함
- 자연어처리 라이브러리를 검색중 괜찮은 것을 발견
KOMORAN 자바 한국어 형태소 분석기 - maven을 사용하여 로컬 라이브러리로 추가하고 빌드
- 위와 같이 하였을때 로컬에 추가한 라이브러리의 클래스를 계속 못찾는 에러가 발생함
ClassNotFoundException - 위의 문제를 해결하기 위하여 다시 검색
maven-assembly-plugin을 사용하여 관련 모든 라이브러리를 추가하여 JAR 생성 - 새로운 문제에 봉착 아래와 같은 문제 발생
Exception in thread "main" java.io.IOException: Mkdirs failed to create
Exception in thread "main" java.io.IOException: Mkdirs failed to create 문제 해결 하기
확인해보니 Macbook Air에서 Standalone 모드일 경우 발생하는 버그로 판명
아래와 같이 특정 파일을 삭제하면 문제 없음.
- JAR 파일에서 META-INF/LICENSE 를 삭제하기
zip -d wordcount-1-jar-with-dependencies.jar META-INF/LICENSE - 제대로 삭제되었는지 확인
jar tvf wordcount-1-jar-with-dependencies.jar | grep -i license
### 명령어 참고
1) 하둡 실행
bin/hadoop jar /Users/leeseonguk/bigData/wordCount/target/wordcount-1-jar-with-dependencies.jar WordCount ~/bigData/hadoop-wordcount/input/ ~/bigData/hadoop-wordcount/output/
2) output 디렉토리 삭제
rm -r ~/bigData/hadoop-wordcount/output/