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