2012-05-23 3 views
0
I got a little problem I want to use nltk corpus in hdfs,But failed.For example I want to load nltk.stopwords in my python code. 
I use this http://eigenjoy.com/2009/11/18/how-to-use-cascading-with-hadoop-streaming/ 

나는 모두 그 일을 처리하지만 내 작업을 변환하는 방법을 모르겠습니다. 내 NLTK 파일 이름은 내 pyam 파일 이름이 PyYAML.3.0.1입니다 NLTK - 2.0.1.rc1 그래서 내 commad은 다음과 같습니다hadoop 스트리밍을 사용할 때 HDFS에서 nltk corpus를 가져 오는 방법

zip -r nltkandyaml.zip nltk-2.0.1.rc1 PyYAML.3.0.1 
다음

가 "라고 MV ntlkandyaml.zip/경로 /에/어디서/당신의 /mapper/will/be/nltkandyaml.mod "

내 mapper.py이 /home/mapreduce/mapper.py에 저장 그래서 내 명령은 다음과 같습니다

mv ntlkandyaml.zip /home/mapreduce/nltkandyaml.mod 

를 잘하는 것이 무엇입니까?

그때 난 내 코퍼스 중지 단어 우편 : 내 코드에서

zip -r /nltk_data/corpora/stopwords-flat.zip * 

은 내가 사용

bin/hadoop jar /home/../streaming/hadoop-0.21.0-streaming.jar -input 
/user/root/input/voa.txt -output /user/root/output -mapper /home/../mapper.py -reducer 
/home/../reducer.py -file /home/../nltkandyaml.mod -file /home/../stopwords-flat.zip 

내가 어디 있어요 말해주십시오

importer = zipimport.zipimporter('nltkandyaml.mod') 
yaml = importer.load_module('PyYAML-3.09') 
nltk = importer.load_module('nltk-2.1.0.1rc1') 
from nltk.corpus.reader import stopwords 
from nltk.corpus.reader import StopWordsCorpusReader 
nltk.data.path+=["."] 
stopwords = StopWordsCorpusReader(nltk.data.find('lib/stopwords-flat.zip')) 

마침내 내가 명령을 사용하여 잘못된

감사합니다. U 모든

+0

hadoop 스트리밍 작업을 실행할 때 나타나는 오류 메시지를 붙여 넣을 수 있습니까? – viper

답변

0

나는 당신의 문제/오류가 무엇인지 완전히 명확하지 않다,하지만 당신은 런타임에 현재 작업 디렉토리에서 사용할 수 stopwords-flat.zip의 내용을 원하는 경우 (오히려 -files보다 -archives 플래그를 사용하는 -file을 사용함에 따라 문제가 될 수 있음).

하둡 명명 된 아카이브 파일 (ZIP)을 풀고 것이며, 그들이 실행중인 매퍼의 로컬 디렉토리에있는 것처럼 내용을 사용할 수 있습니다 : 스크립트에서 다음

bin/hadoop jar /home/../streaming/hadoop-0.21.0-streaming.jar \ 
    -input /user/root/input/voa.txt 
    -output /user/root/output \ 
    -mapper /home/../mapper.py \ 
    -reducer /home/../reducer.py \ 
    -files /home/../nltkandyaml.mod \ 
    -archives /home/../stopwords-flat.zip 
+0

답변 해 주셔서 감사합니다. 답변을 사용하고 있지만 여전히 실패했습니다. 해결 될 때까지 –

0
zip -r [your-nltk-package-name/nltk] nltk.zip 

    zip -r [your-yaml-package-name/lib/yaml] yaml.zip 

추가 : 명령에

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

는 추가 :

-file [path-to-your-zip-file] 
관련 문제