我的算法目前使用 nr_reduces 1,因为我需要确保聚合给定键的数据。
要将输入传递给下一次迭代,应该使用“chain_reader”。但是,映射器的结果是作为单个结果列表的,这似乎意味着下一个映射迭代将作为单个映射器发生!有没有办法拆分结果以触发多个映射器?
请您参考如下方法:
我可以给出很长的答案,但由于这个问题已有 3 年历史:查看此页面:http://discoproject.org/doc/disco/howto/dataflow.html#single-partition-map
简而言之:当 mapper 函数有 N 个输入时,输出将为 N,通过设置 merge_partitions=False,您的 reduce 将输出 N 个 blob。现在,如果您想生成比输入更多的输出,您可以传递 partions=N。但是,当您的迪斯科作业仅包含一个映射器函数并且您想要生成分区输出时,请添加最简单的 reduce fase 并结合上述参数来获得分区输出。
@staticmethod
def reduce(iter, out, params):
for (key, value) in iter:
out.add(key, value)
