Hello,
 I am working on a problem which implements Adamic Adar Algorithm using
Gelly.
I am running into this exception for all the Joins (including the one that
are part of the reduceOnNeighbors function)

Too few memory segments provided. Hash Join needs at least 33 memory
segments.


The problem persists even when I comment out some of the joins.

Even after using edg = edg.join(graph.getEdges(),
JoinOperatorBase.JoinHint.BROADCAST_HASH_SECOND).where(0,1).equalTo(0,1).with(new
JoinEdge());

as suggested by @AndraLungu the problem persists.

The code is


DataSet<Tuple2<Long, Long>> degrees = graph.getDegrees();

        //get neighbors of each vertex in the HashSet for it's value
        computedNeighbors = graph.reduceOnNeighbors(new GatherNeighbors(),
EdgeDirection.ALL);

        //get vertices with updated values for the final Graph which will
be used to get Adamic Edges
        Vertices = computedNeighbors.join(degrees,
JoinOperatorBase.JoinHint.BROADCAST_HASH_FIRST).where(0).equalTo(0).with(new
JoinNeighborDegrees());

        Graph<Long, Tuple3<Double, HashSet<Long>, List<Tuple3<Long, Long,
Double>>>, Double> updatedGraph =
                Graph.fromDataSet(Vertices, edges, env);

        //configure Vertex Centric Iteration
        VertexCentricConfiguration parameters = new
VertexCentricConfiguration();

        parameters.setName("Find Adamic Adar Edge Weights");

        parameters.setDirection(EdgeDirection.ALL);

        //run Vertex Centric Iteration to get the Adamic Adar Edges into
the vertex Value
        updatedGraph = updatedGraph.runVertexCentricIteration(new
GetAdamicAdarEdges<Long>(), new NeighborsMessenger<Long>(), 1, parameters);

        //Extract Vertices of the updated graph
        DataSet<Vertex<Long, Tuple3<Double, HashSet<Long>,
List<Tuple3<Long, Long, Double>>>>> vertices = updatedGraph.getVertices();

        //Extract the list of Edges from the vertex values
        DataSet<Tuple3<Long, Long, Double>> edg = vertices.flatMap(new
GetAdamicList());

        //Partial weights for the edges are added
        edg = edg.groupBy(0,1).reduce(new AdamGroup());

        //Graph is updated with the Adamic Adar Edges
        edg = edg.join(graph.getEdges(),
JoinOperatorBase.JoinHint.BROADCAST_HASH_SECOND).where(0,1).equalTo(0,1).with(new
JoinEdge());

Any idea how I could tackle this Exception?

Reply via email to