第一个参数iter是一个迭代器,涉及被map函数产生的键和值,它们是reduce实例。
在本例中,单词随机被委托给不同的reduce实例,然后,要单词相同,处理它的reduce也相同,可确保最终合计是正确的。
第二个参数params与map函数中一致,在此,仅简单使用disco.util.kvgroup()来提取每个单词统计计数,累计计数,yield(产生)结果。
运行作业
下面开始运行作业,可使用大量参数定制作业,但通常来说,对于简单的任务来说 ,仅使用其中3个即可。除了启动作业之外,我们还需要输出结果,首先,我们在作业完成前要等待,通过调用wait等待调用完毕,完成后会返回结果,为方便起见,通过job对象调用wait及其它相关方法。
result_iterator()函数取结果文件地址列表,它被wait()函数返回,iterates(迭代)遍历所有结果中的键值对。
defmap(line, params):
for word in line.split():
yield word, 1
defreduce(iter, params):
from disco.util import kvgroup
for word, counts in kvgroup(sorte