복붙노트

[HADOOP] 하둡과 NLTK : 스톱 워드로 실패

HADOOP

하둡과 NLTK : 스톱 워드로 실패

하둡에서 파이썬 프로그램을 실행하려고합니다. 이 프로그램에는 NLTK 라이브러리가 포함됩니다. 이 프로그램은 여기에 설명 된대로 Hadoop Streaming API도 활용합니다.

mapper.py:

#!/usr/bin/env python
import sys
import nltk
from nltk.corpus import stopwords

#print stopwords.words('english')

for line in sys.stdin:
        print line,

reducer.py:

#!/usr/bin/env python

import sys
for line in sys.stdin:
    print line,

콘솔 명령 :

bin/hadoop jar contrib/streaming/hadoop-streaming.jar \ -file /hadoop/mapper.py -mapper /hadoop/mapper.py -file /hadoop/reducer.py -reducer /hadoop/reducer.py -input /hadoop/input.txt -output /hadoop/output

이것은 입력 파일의 행을 포함하는 출력과 함께 완벽하게 실행됩니다.

그러나이 줄 (mapper.py에서) :

#print stopwords.words ( 'english')

주석 처리가 없으면 프로그램이 실패하고

나는 독립형 파이썬 프로그램을 확인했다.

완벽하게 작동하므로 Hadoop 프로그램이 실패하는 이유에 대해 절대적으로 충격을 받았습니다.

도움을 주시면 감사하겠습니다. 감사합니다

해결법

  1. ==============================

    1.'영어'가 인쇄 중지 단어의 파일입니까? words ( 'english')? 그렇다면 노드를 통해 전송하려면 -file을 사용해야합니다.

    '영어'가 인쇄 중지 단어의 파일입니까? words ( 'english')? 그렇다면 노드를 통해 전송하려면 -file을 사용해야합니다.

  2. ==============================

    2.다음 명령을 사용하여 압축을 풉니 다.

    다음 명령을 사용하여 압축을 풉니 다.

    importer = zipimport.zipimporter('nltk.zip')
        importer2=zipimport.zipimporter('yaml.zip')
        yaml = importer2.load_module('yaml')
        nltk = importer.load_module('nltk')
    

    위에 붙여 넣은 링크를 확인하십시오. 그들은 모든 단계를 언급했습니다.

  3. from https://stackoverflow.com/questions/19057741/hadoop-and-nltk-fails-with-stopwords by cc-by-sa and MIT license