【发布时间】:2019-01-09 11:52:43
【问题描述】:
我是 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 这样的公共键作为值,因为对应于相同键的值被传递给同一个减速器并且您想要它们多合一减速机!虽然在我看来,以这种方式使用 MRJob 除了学习 MRJob 基础知识之外没有任何优势!