2012-05-23 1 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 файл NLTK-2.0.1.rc1 мое имя pyam файл PyYAML.3.0.1 поэтому мой commad является:Как импортировать nltk corpus в HDFS, когда я использую потоки hadoop

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

тогда сказал «мв ntlkandyaml.zip/путь/к /, где/ваш /mapper/will/be/nltkandyaml.mod»

Мой mapper.py сохранить в /home/mapreduce/mapper.py так что моя команда:

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

это правильно?

тогда я пронестись мои Corpus: стоп-слова

zip -r /nltk_data/corpora/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')) 

наконец я использую команду:

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 

пожалуйста скажите мне, где я неправильный

спасибо лет у всех

+0

Можете ли вы вставить сообщение об ошибке, которое вы получите при запуске вашей работы потоковой передачи. – viper

ответ

0

Я не совсем ясно, что ваша проблема/ошибка, но если вы хотите, чтобы содержимое stopwords-flat.zip быть доступны в текущем рабочем каталоге во время выполнения использовать -archives флаг, а не -files (который может быть вашей проблемой, поскольку вы используете -file).

Hadoop распакует имени файла архива (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] 
Смежные вопросы