Python Disco/MapReduce:使用上一次迭代的结果作为新迭代的输入

Python Disco/MapReduce:使用上一次迭代的结果作为新迭代的输入,python,mapreduce,disco,Python,Mapreduce,Disco,目前我正在迪斯科舞厅实施PageRank。作为一种迭代算法,一次迭代的结果被用作下一次迭代的输入 我有一个大文件,它表示所有链接,每一行表示一个页面,行中的值表示它链接到的页面 对于Disco,我将这个文件分成N个块,然后运行MapReduce一轮。结果,我得到了一组(页面、排名)元组 我想把这个排名反馈给下一次迭代。但是,现在我的映射器需要两个输入:图形文件和pageranks 我想一起“拉拉链” 图形文件和页面排名, 使每一行代表一个 页面,它的排名,它的链接 因为这个图形文件被分成N个块,

目前我正在迪斯科舞厅实施PageRank。作为一种迭代算法,一次迭代的结果被用作下一次迭代的输入

我有一个大文件,它表示所有链接,每一行表示一个页面,行中的值表示它链接到的页面

对于Disco,我将这个文件分成N个块,然后运行MapReduce一轮。结果,我得到了一组(页面、排名)元组

我想把这个排名反馈给下一次迭代。但是,现在我的映射器需要两个输入:图形文件和pageranks

  • 我想一起“拉拉链” 图形文件和页面排名, 使每一行代表一个 页面,它的排名,它的链接
  • 因为这个图形文件被分成N个块,所以我需要将pagerank向量分成N个块 并行块,并压缩区域 将pagerank向量的 大块
  • 这一切似乎比必要的要复杂得多,而且作为一个非常简单的操作(使用经典的mapreduce算法),我似乎遗漏了一些可以真正简化方法的Disco


    有什么想法吗?

    看起来您希望在第一次迭代中使用初始映射,然后在后续每次迭代中使用iter映射

    见:

    您能否输出包含大纲链接的python对象,而不仅仅是(页面、排名)元组

    另一种选择是让页面在某个地方(dict、memcache、kyotocainet等)键入大纲链接,然后从映射函数中查找它们。如果你在用DISCO链接东西,我想你不想在工作流中间把东西拉在一起。