如何解决我如何实现一个 map reduce 算法来查找图中所有长度为 2 的路径
输入是图中的所有成对源/目的地,或者像这样的边列表:
url1,url2
url1,url3
url2,url3
url4,url5
url2,url4
from mrjob.job import MRJob
class Mrgraph(MRJob):
def mapper(self,line_no,line):
line = line.split(',')
yield line[0],line[1]
def reducer(self,source,destinations):
for destination in destinations:
if destination in mapper:
#I don't kNow what I'm doing
Mrgraph.run()
我无法理解 map-reduce 逻辑。输出需要是:
url2、url4、url5
url1、url2、url3
url1、url2、url4
我还尝试定义自定义步骤,其中所有邻接列表都作为第一个减速器的输出发送,使用相同的键,以便接下来的减速器将它们全部聚集在一起,但这感觉像是作弊,我认为它不会是分布式计算没有了。
from mrjob.job import MRJob
from mrjob.step import MRStep
class Mrgraph(MRJob):
def steps(self):
return [
MRStep(mapper=self.mapper_edges,reducer=self.reducer_destinations),MRStep(reducer=self.reducer_next_step)
]
def mapper_edges(self,line[1]
def reducer_destinations(self,destinations):
yield None,(source,list(destinations))
def reducer_next_step(self,_,map):
for source,destinations in map:
#again I don't kNow What I am doing
if __name__ == '__main__':
Mrgraph.run()
有什么想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。