2016-02-26 3 views
0

Я кодирую mapreducer в python с библиотеками mrjob. Я установил пакет mrjob но когда я from mrjob.step import MRStep окажись ошибку:ImportError: Нет модуля с именем step

from mrjob.step import MRStep 
ImportError: No module named step 

Любой человек может мне помочь? Большое спасибо

+0

вероит умело, потому что в mrjob нет модуля или файла – dnit13

+0

от mrjob.job import MRJob отлично работает, братан. – NoobFromVN

+0

Нет. Это недопустимый синтаксис, @ R.Murray. Im следуют за учебником, и я видел, как он работает нормально. Другое дело в том, что они используют окно и я использую ubuntu – NoobFromVN

ответ

0

Привет всем Я решил проблему, вот рабочий код для подсчета слов. По сути, для меня работала простая замена.

из mrjob.job импорта MRJob импорта повторно

WORD_RE = re.compile (г "[\ ш '] +")

класс MRMostUsedWord (MRJob):

def mapper_get_words(self, _, line): 
    # yield each word in the line 
    for word in WORD_RE.findall(line): 
     yield (word.lower(), 1) 

def combiner_count_words(self, word, counts): 
    # sum the words we've seen so far 
    yield (word, sum(counts)) 

def reducer_count_words(self, word, counts): 
    # send all (num_occurrences, word) pairs to the same reducer. 
    # num_occurrences is so we can easily use Python's max() function. 
    yield None, (sum(counts), word) 

# discard the key; it is just None 
def reducer_find_max_word(self, _, word_count_pairs): 
    # each item of word_count_pairs is (count, word), 
    # so yielding one results in key=counts, value=word 
    yield max(word_count_pairs) 

def steps(self): 
    return [ 
     self.mr(mapper=self.mapper_get_words, 
       combiner=self.combiner_count_words, 
       reducer=self.reducer_count_words), 
     self.mr(reducer=self.reducer_find_max_word) 
    ] 

если изменения имен == 'основного': MRMostUsedWord.run()

 Смежные вопросы

  • Нет связанных вопросов^_^