Пример #1
0
    outEdges = [Edge(tid, int(v)) 
        for _, tid, v in lines]
    return (id, Vertex(id, sys.maxint, outEdges, True))

def compute(self, vs, agg, superstep):
    newValue = min(self.value, vs[0]) if vs else self.value
    if newValue != self.value:
        outbox = [Message(edge.target_id, newValue + edge.value)
                for edge in self.outEdges]
    else:
        outbox = []
    return Vertex(self.id, newValue, self.outEdges, False), outbox

if __name__ == '__main__':
    ctx = DparkContext()
    path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'graph.txt')
    lines = ctx.textFile(path).map(lambda line:line.split(' '))
    vertices = lines.groupBy(lambda line:line[0]).map(to_vertex)
    startVertex = str(0)
    messages = ctx.makeRDD([(startVertex, Message(startVertex, 0))])
    
    print 'read', vertices.count(), 'vertices and ', messages.count(), 'messages.'

    result = Bagel.run(ctx, vertices, messages, compute, MinCombiner(), numSplits=2)
    
    print 'Shortest path from %s to all vertices:' % startVertex
    for v in result.collect():
        if v.value == sys.maxint:
            v.value = 'inf'
        print v.id, v.value
Пример #2
0
    return (id, Vertex(id, sys.maxint, outEdges, True))


def compute(self, vs, agg, superstep):
    newValue = min(self.value, vs[0]) if vs else self.value
    if newValue != self.value:
        outbox = [(edge.target_id, newValue + edge.value)
                  for edge in self.outEdges]
    else:
        outbox = []
    return Vertex(self.id, newValue, self.outEdges, False), outbox


if __name__ == '__main__':
    ctx = DparkContext()
    path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'graph.txt')
    lines = ctx.textFile(path).map(lambda line: line.split(' '))
    vertices = lines.groupBy(lambda line: line[0]).map(to_vertex)
    startVertex = str(0)
    messages = ctx.makeRDD([(startVertex, 0)])

    print('read', vertices.count(), 'vertices and ', messages.count(), 'messages.')

    result = Bagel.run(ctx, vertices, messages, compute, BasicCombiner(min), numSplits=2)

    print('Shortest path from %s to all vertices:' % startVertex)
    for id, v in result.collect():
        if v.value == sys.maxint:
            v.value = 'inf'
        print(v.id, v.value)
Пример #3
0
def compute(self, vs, agg, superstep):
    newValue = min(self.value, vs[0]) if vs else self.value
    if newValue != self.value:
        outbox = [
            SPMessage(edge.target_id, newValue + edge.value)
            for edge in self.outEdges
        ]
    else:
        outbox = []
    return SPVertex(self.id, newValue, self.outEdges, False), outbox


if __name__ == '__main__':
    ctx = DparkContext()
    lines = ctx.textFile('graph.txt').map(lambda line: line.split(' '))
    vertices = lines.filter(lambda x: len(x) == 3).groupBy(
        lambda line: line[0]).map(to_vertex)
    messages = lines.filter(lambda x: len(x) == 2).map(
        lambda (vid, v): (vid, SPMessage(vid, int(v))))
    print 'read', vertices.count(), 'vertices and ', messages.count(
    ), 'messages.'

    result = Bagel.run(ctx, vertices, messages, compute, MinCombiner())
    startVertex = 0
    print 'Shortest path from %s to all vertices:' % startVertex
    for v in result.collect():
        if v.value == sys.maxint:
            v.value = 'inf'
        print v.id, v.value