如何使用MRJob从文本文件计算平均值

时间:2018-11-27 10:57:40

标签: python mapreduce mrjob

我是MrJob的初学者,无法从素数文本文件计算平均素数。我不确定在哪一部分应用算术逻辑,也不确定在使用MrJob时是否应该产生列表。 文本文件包含一百万个素数,这是到目前为止我要介绍的内容,我不知道我的情况下关键值应该是什么。

%%writefile prime_average.py
from mrjob.job import MRJob

class primeAverages(MRJob):

def mapper(self, _, line):
    results = []
    for x in line.split():
        if(x.isdigit()):
            yield x, 1

def reducer(self, word, key):
    yield word, sum(word)/len(key)

1 个答案:

答案 0 :(得分:0)

您可以使用类似的内容:

def mapper(self, _, line):
    if line.isdigit():
        yield (None, int(line))

def reducer(self, key, values):
    s = 0 #sum of primes
    c = 0 #number of primes
    for p in values:
        s += p
        c += 1
    yield (None, s / c)