@Override public Edge<I, E> createData() { return getConf().createReusableEdge(); }
@Override public Iterator<Edge<I, E>> iterator() { // Returns an iterator that reuses objects. return new UnmodifiableIterator<Edge<I, E>>() { /** Wrapped map iterator. */ private Iterator<Map.Entry<I, E>> mapIterator = edgeMultimap.entries().iterator(); /** Representative edge object. */ private ReusableEdge<I, E> representativeEdge = getConf().createReusableEdge(); @Override public boolean hasNext() { return mapIterator.hasNext(); } @Override public Edge<I, E> next() { Map.Entry<I, E> nextEntry = mapIterator.next(); representativeEdge.setTargetVertexId(nextEntry.getKey()); representativeEdge.setValue(nextEntry.getValue()); return representativeEdge; } }; }
@Override public VertexSender<LongWritable, Writable, LongWritable> getVertexSender( final BlockWorkerSendApi<LongWritable, Writable, LongWritable, NullWritable> workerApi, Object executionStage) { final ReusableEdge<LongWritable, LongWritable> reusableEdge = workerApi.getConf().createReusableEdge(); reusableEdge.setTargetVertexId(new LongWritable(-1)); reusableEdge.setValue(new LongWritable(-1)); return new VertexSender<LongWritable, Writable, LongWritable>() { @Override public void vertexSend(Vertex<LongWritable, Writable, LongWritable> vertex) { for (Edge<LongWritable, LongWritable> edge : vertex.getEdges()) { workerApi.addEdgeRequest(edge.getTargetVertexId(), reusableEdge); workerApi.sendMessage(edge.getTargetVertexId(), NullWritable.get()); } } }; } };
@Override public void initialize(InputSplit inputSplit, TaskAttemptContext context) throws IOException { beta = getConf().getFloat( BETA, 0.0f); aggregateVertices = getConf().getLong( AGGREGATE_VERTICES, 0); BspInputSplit bspInputSplit = (BspInputSplit) inputSplit; long extraVertices = aggregateVertices % bspInputSplit.getNumSplits(); totalSplitVertices = aggregateVertices / bspInputSplit.getNumSplits(); if (bspInputSplit.getSplitIndex() < extraVertices) { ++totalSplitVertices; } startingVertexId = bspInputSplit.getSplitIndex() * (aggregateVertices / bspInputSplit.getNumSplits()) + Math.min(bspInputSplit.getSplitIndex(), extraVertices); edgesPerVertex = getConf().getInt( EDGES_PER_VERTEX, 0); if (getConf().reuseEdgeObjects()) { reusableEdge = getConf().createReusableEdge(); } int seed = getConf().getInt(SEED, -1); if (seed != -1) { rnd = new Random(seed); } else { rnd = new Random(); } }
@Override public void initialize(InputSplit inputSplit, TaskAttemptContext context) throws IOException { int aggregateVertices = getConf().getInt( PseudoRandomInputFormatConstants.AGGREGATE_VERTICES, 0); BspInputSplit bspInputSplit = (BspInputSplit) inputSplit; int extraVertices = aggregateVertices % bspInputSplit.getNumSplits(); totalSplitVertices = aggregateVertices / bspInputSplit.getNumSplits(); if (bspInputSplit.getSplitIndex() < extraVertices) { ++totalSplitVertices; } startingVertexId = bspInputSplit.getSplitIndex() * (aggregateVertices / bspInputSplit.getNumSplits()) + Math.min(bspInputSplit.getSplitIndex(), extraVertices); edgesPerVertex = getConf().getInt( PseudoRandomInputFormatConstants.EDGES_PER_VERTEX, 0); rand = new Random(bspInputSplit.getSplitIndex()); if (getConf().reuseEdgeObjects()) { reusableEdge = getConf().createReusableEdge(); } localEdgesHelper = new PseudoRandomIntNullLocalEdgesHelper( aggregateVertices, getConf()); }
@Override public void initialize(InputSplit inputSplit, TaskAttemptContext context) throws IOException { trustProb = getConf().getFloat( TRUST_PROBABILITY, TRUST_PROBABILITY_DEFAULT); beta = getConf().getFloat( BETA, 0.0f); aggregateVertices = getConf().getLong( AGGREGATE_VERTICES, 0); BspInputSplit bspInputSplit = (BspInputSplit) inputSplit; long extraVertices = aggregateVertices % bspInputSplit.getNumSplits(); totalSplitVertices = aggregateVertices / bspInputSplit.getNumSplits(); if (bspInputSplit.getSplitIndex() < extraVertices) { ++totalSplitVertices; } startingVertexId = bspInputSplit.getSplitIndex() * (aggregateVertices / bspInputSplit.getNumSplits()) + Math.min(bspInputSplit.getSplitIndex(), extraVertices); edgesPerVertex = getConf().getInt( EDGES_PER_VERTEX, 0); if (getConf().reuseEdgeObjects()) { reusableEdge = getConf().createReusableEdge(); } int seed = getConf().getInt(SEED, -1); if (seed != -1) { rnd = new Random(seed); } else { rnd = new Random(); } }