Disco / MapReduce:在拆分数据上使用chain_reader

时间:2010-04-02 15:54:04

标签: python mapreduce disco

我的算法目前使用nr_reduces 1,因为我需要确保聚合给定密钥的数据。

要将输入传递给下一次迭代,应使用“chain_reader”。但是,映射器的结果是单个结果列表,看起来这意味着下一个映射迭代将作为单个映射器发生!有没有办法将结果拆分为触发多个映射器?

1 个答案:

答案 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)