Python найти максимальное значение по mrjob - PullRequest
0 голосов
/ 26 февраля 2019

Я хотел бы найти максимальное значение в списке по mrjob.когда я запускаю это, он всегда показывает ошибку:

Конфиги не найдены;откат на автоконфигурацию;Не указаны конфиги для встроенного раннера

Я хотел бы знать, что означает

class MRWordCounter(MRJob):

def mapper(self, key, line):
            num = csv_readline(line)
            yield num, 1
def reducer(self, word, compare):
            num_list = []
            for value in compare:
                    if value == max(compare):
                            value=num_list
                            yield word, num_list

1 Ответ

0 голосов
/ 08 августа 2019

Вы можете использовать этот метод вместо: -

#The most occurred word
#Import Dependencies
from mrjob.job import MRJob
from mrjob.step import MRStep
import re

WORD_RE = re.compile(r"[\w']+")


class 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 [
            MRStep(mapper=self.mapper_get_words,
                   combiner=self.combiner_count_words,
                   reducer=self.reducer_count_words),
            MRStep(reducer=self.reducer_find_max_word)
        ]


if __name__ == '__main__':
    MRMostUsedWord.run()

Что он просто делает:

  • сопоставить слова.
  • объединить счетчик для каждого слова.
  • перевернуть ключ, пара значений.
  • уменьшить донайти максимальное слово произошлоЧтобы запустить код,сохраните текстовый файл и скрипт python в одной папке, а затем:

    python3 xyz.py xyz.txt

...