Hadoop и NLTK: сбои со стоп-словами

1

Я пытаюсь запустить программу Python на Hadoop. Программа включает библиотеку NLTK. Программа также использует API Hadoop Streaming, как описано здесь.

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')

без комментирования, программа не работает и говорит:

Работа не удалась. Ошибка: количество неудачных заданий карты превысило допустимый предел. FailedCount: 1.

Я проверил и в автономной программе python,

print stopwords.words('english')

работает отлично, и поэтому я абсолютно зациклен на том, почему он заставляет мою программу Hadoop терпеть неудачу.

Я был бы очень признателен за любую помощь! спасибо

  • 0
    У вас нет ntlk corpus в вашем каталоге hadoop. Попробуйте это stackoverflow.com/questions/10716302/…
  • 0
    Попробуйте это также --- stackoverflow.com/questions/6811549/…
Показать ещё 4 комментария
Теги:
hadoop
cluster-analysis
mapreduce

2 ответа

0
Лучший ответ

Является ли "английский" в файле print stopwords.words('english')? Если да, вам нужно использовать -file для этого, чтобы отправить его через узлы.

0

Используйте эти команды для распаковки:

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

Чек ссылки, которые я вставил выше. Они упомянули все этапы.

  • 0
    Нужно ли отправлять эти файлы в консоли или они хранятся локально на каждом компьютере? Кроме того, мне нужен nltk.zip или nltk_data.zip? Как я могу найти первое? Какую роль в этом играет yaml? Спасибо!
  • 0
    Я попробовал то, что вы предложили, и импортировал nltk и yaml без проблем. Тем не менее, я до сих пор не могу заставить работать стоп-слова. from nltk.corpus import stopwords не приводит к сбою программы, но как только я print stopwords.words('english') , происходит сбой. Есть идеи как исправить? Я включил это в консольную команду: -archives ./stopwords.zip Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню