我的算法目前使用 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
. 但是,当您的 disco 作业仅包含一个映射器函数并且您想要生成分区输出时,请添加最简单的 reduce fase 并结合上述参数来获得该分区输出。
@静态方法 def reduce(iter, out, params): 迭代器中的(键,值): out.add(键,值)