List of usage examples for org.apache.hadoop.io DoubleWritable get
public double get()
From source file:org.apache.giraph.block_app.library.pagerank.PageRankIteration.java
License:Apache License
@Override public VertexSender<I, V, E> getVertexSender(final BlockWorkerSendApi<I, V, E, DoubleWritable> workerApi, Object executionStage) {/*from w w w .ja va 2s . c om*/ final DoubleWritable message = new DoubleWritable(); return vertex -> { DoubleWritable newValue = valueTransfer.get(); // Update stats if (newValue != null) { DoubleWritable oldValue = valueGetter.get(vertex); double diff = Math.abs(oldValue.get() - newValue.get()); reduceDouble(superstepErrorSum, diff); reduceDouble(superstepErrorMax, diff); reduceDouble(superstepErrorRMSESum, diff * diff); if (oldValue.get() > 0) { reduceDouble(superstepRelativeErrorSum, diff / oldValue.get()); reduceDouble(superstepRelativeErrorMax, diff / oldValue.get()); } valueSetter.apply(vertex, newValue); reduceLong(verticesModified, 1); } // Send pagerank value to neighbors, or update sink sum DoubleWritable value = valueGetter.get(vertex); superstepPageRankAll.reduce(value); if (vertex.getNumEdges() == 0) { // sink vertex superstepPageRankSinks.reduce(value); } else { // not a sink if (value.get() > 0) { if (edgeValueGetter.allVertexEdgesTheSame()) { message.set(value.get() * edgeValueGetter.getEdgeValue(vertex, null)); workerApi.sendMessageToAllEdges(vertex, message); } else { for (Edge<I, E> edge : vertex.getEdges()) { message.set(value.get() * edgeValueGetter.getEdgeValue(vertex, edge.getValue())); workerApi.sendMessage(edge.getTargetVertexId(), message); } } } } }; }
From source file:org.apache.giraph.block_app.library.pagerank.PageRankIteration.java
License:Apache License
/** * Calculates the new value of pagerank at a vertex * * @param messages Messages// w ww. j a v a 2 s .co m * @return new value or change */ protected double calculateNewValue(long totalVertices, double sinkSum, double allSum, Iterable<DoubleWritable> messages) { double sum = 0.0; for (DoubleWritable message : messages) { sum += message.get(); } // Every vertex also receives equal fraction of pagerank value from sinks sum += sinkSum / totalVertices; return dampingFactor * sum + (1.0 - dampingFactor) * allSum / totalVertices; }
From source file:org.apache.giraph.classifier.lp.GFHF.java
License:Apache License
@Override public void compute(Iterator<DoubleArrayWritable> msgIterator) { MulticlassClassifierWritable vertexValue = getVertexValue(); Long maxIteration = getMaxSuperstep(); Long currentIteration = getSuperstep(); /* TODO: iterate until convergence to labels (MulticlassClassifierWritable.fValue) */ if (currentIteration / 3 == maxIteration) { voteToHalt();/* www . j a va 2 s . c o m*/ return; } switch (currentIteration.intValue() % 3) { case 0: initialLabeling(); break; case 1: Integer argMaxIndex = vertexValue.argMax(); if (vertexValue.getCurrentValue(argMaxIndex) > 0.0) { for (LongWritable targetVertexId : this) { final int elemSize = vertexValue.getClassLabelIndexSize(); DoubleWritable fvals[] = (DoubleWritable[]) vertexValue.getCurrentValues().toArray(); DoubleWritable edgeWeight = getEdgeValue(targetVertexId); DoubleWritable msg[] = new DoubleWritable[elemSize]; for (int i = 0; i < elemSize; ++i) { msg[i] = new DoubleWritable(fvals[i].get() * edgeWeight.get()); } DoubleArrayWritable daw = new DoubleArrayWritable(); daw.set(msg); sendMsg(targetVertexId, daw); } } break; case 2: Double norm = 0.0; for (LongWritable targetVertexId : this) { DoubleWritable edgeValue = this.getEdgeValue(targetVertexId); norm += edgeValue.get(); } /* initialize fValue */ vertexValue.initializeFValue(); Double tempVals[] = new Double[vertexValue.getClassLabelIndexSize()]; for (int i = 0; i < vertexValue.getClassLabelIndexSize(); ++i) { tempVals[i] = 0.0; } /* receive messages and update fValues */ while (msgIterator.hasNext()) { DoubleArrayWritable recvMsg = msgIterator.next(); int fValueIndex = 0; for (Double fVal : recvMsg) { tempVals[fValueIndex++] += fVal / norm; } } for (int i = 0; i < vertexValue.getClassLabelIndexSize(); ++i) { vertexValue.setCurrentValue(i, tempVals[i]); } break; default: break; } }
From source file:org.apache.giraph.combiner.DoubleSumMessageCombiner.java
License:Apache License
@Override public void combine(WritableComparable vertexIndex, DoubleWritable originalMessage, DoubleWritable messageToCombine) { originalMessage.set(originalMessage.get() + messageToCombine.get()); }
From source file:org.apache.giraph.combiner.MinimumDoubleCombiner.java
License:Apache License
@Override public void combine(LongWritable vertexIndex, DoubleWritable originalMessage, DoubleWritable messageToCombine) { if (originalMessage.get() > messageToCombine.get()) { originalMessage.set(messageToCombine.get()); }// w w w .j a v a 2 s.co m }
From source file:org.apache.giraph.combiner.MinimumDoubleMessageCombiner.java
License:Apache License
@Override public void combine(WritableComparable vertexIndex, DoubleWritable originalMessage, DoubleWritable messageToCombine) { if (originalMessage.get() > messageToCombine.get()) { originalMessage.set(messageToCombine.get()); }//from w ww. j a v a 2s.c om }
From source file:org.apache.giraph.comm.messages.primitives.LongDoubleMessageStore.java
License:Apache License
@Override public void addPartitionMessages(int partitionId, VertexIdMessages<LongWritable, DoubleWritable> messages) throws IOException { LongWritable reusableVertexId = new LongWritable(); DoubleWritable reusableMessage = new DoubleWritable(); DoubleWritable reusableCurrentMessage = new DoubleWritable(); Long2DoubleOpenHashMap partitionMap = map.get(partitionId); synchronized (partitionMap) { VertexIdMessageIterator<LongWritable, DoubleWritable> iterator = messages.getVertexIdMessageIterator(); while (iterator.hasNext()) { iterator.next();//from w ww. j ava2 s . c o m long vertexId = iterator.getCurrentVertexId().get(); double message = iterator.getCurrentMessage().get(); if (partitionMap.containsKey(vertexId)) { reusableVertexId.set(vertexId); reusableMessage.set(message); reusableCurrentMessage.set(partitionMap.get(vertexId)); messageCombiner.combine(reusableVertexId, reusableCurrentMessage, reusableMessage); message = reusableCurrentMessage.get(); } partitionMap.put(vertexId, message); } } }
From source file:org.apache.giraph.debugger.examples.instrumented.BuggySimpleShortestPathsDebugComputationModified.java
License:Apache License
@Override public void compute(Vertex<LongWritable, DoubleWritable, FloatWritable> vertex, Iterable<DoubleWritable> messages) throws IOException { // We do a dummy read of the aggregator below because for now we only // intercept an aggregator // if at least one vertex reads it. LongWritable aggregatedValue = getAggregatedValue( SimpleShortestPathsMaster.NV_DISTANCE_LESS_THAN_THREE_AGGREGATOR); if (aggregatedValue != null) { System.out.print("NV_DISTANCE_LESS_THAN_THREE_AGGREGATOR: " + aggregatedValue.get() + "\n"); }//from ww w. ja va2s . c o m if (getSuperstep() == 0) { vertex.setValue(new DoubleWritable(isSource(vertex) ? 0d : Double.MAX_VALUE)); } double previousValue = vertex.getValue().get(); double minDist = previousValue; for (DoubleWritable message : messages) { minDist = Math.min(minDist, message.get()); } if (LOG.isDebugEnabled()) { LOG.debug("Vertex " + vertex.getId() + " got minDist = " + minDist + " vertex value = " + vertex.getValue()); } if (minDist < vertex.getValue().get() || getSuperstep() == 0 && minDist == 0) { vertex.setValue(new DoubleWritable(minDist)); for (Edge<LongWritable, FloatWritable> edge : vertex.getEdges()) { double distance = minDist + edge.getValue().get(); if (LOG.isDebugEnabled()) { LOG.debug( "Vertex " + vertex.getId() + " sent to " + edge.getTargetVertexId() + " = " + distance); } // INTENTIONAL BUG:Instead of sending the distance (i.e. by adding edge // values), // we send the vertex value. sendMessage(edge.getTargetVertexId(), new DoubleWritable(minDist)); } } if (previousValue > 3 && minDist <= 3) { aggregate(SimpleShortestPathsMaster.NV_DISTANCE_LESS_THAN_THREE_AGGREGATOR, new LongWritable(1)); } vertex.voteToHalt(); }
From source file:org.apache.giraph.debugger.examples.pagerank.SimplePageRankComputation.java
License:Apache License
@Override public void compute(Vertex<LongWritable, DoubleWritable, NullWritable> vertex, Iterable<DoubleWritable> messages) throws IOException { if (getSuperstep() >= 1) { double sum = 0; for (DoubleWritable message : messages) { sum += message.get(); }/*from ww w . j a v a 2 s . c om*/ DoubleWritable vertexValue = new DoubleWritable((0.15f / getTotalNumVertices()) + 0.85f * sum); vertex.setValue(vertexValue); aggregate(MAX_AGG, vertexValue); aggregate(MIN_AGG, vertexValue); aggregate(SUM_AGG, new LongWritable(1)); // LOG.info(vertex.getId() + ": PageRank=" + vertexValue + " max=" + // getAggregatedValue(MAX_AGG) + " min=" + getAggregatedValue(MIN_AGG)); } if (getSuperstep() < MAX_SUPERSTEPS) { long edges = vertex.getNumEdges(); sendMessageToAllEdges(vertex, new DoubleWritable(vertex.getValue().get() / edges)); } else { vertex.voteToHalt(); } }
From source file:org.apache.giraph.debugger.examples.simpledebug.BuggySimpleShortestPathsComputation.java
License:Apache License
@Override public void compute(Vertex<LongWritable, DoubleWritable, FloatWritable> vertex, Iterable<DoubleWritable> messages) throws IOException { // We do a dummy read of the aggregator below because for now we only // intercept an aggregator // if at least one vertex reads it. LongWritable aggregatedValue = getAggregatedValue( SimpleShortestPathsMaster.NV_DISTANCE_LESS_THAN_THREE_AGGREGATOR); if (aggregatedValue != null) { System.out.print("NV_DISTANCE_LESS_THAN_THREE_AGGREGATOR: " + aggregatedValue.get() + "\n"); }//from w w w . j ava2 s. c om if (getSuperstep() == 0) { vertex.setValue(new DoubleWritable(isSource(vertex) ? 0d : Double.MAX_VALUE)); } double previousValue = vertex.getValue().get(); double minDist = previousValue; for (DoubleWritable message : messages) { minDist = Math.min(minDist, message.get()); } if (LOG.isDebugEnabled()) { LOG.debug("Vertex " + vertex.getId() + " got minDist = " + minDist + " vertex value = " + vertex.getValue()); } if (minDist < vertex.getValue().get() || getSuperstep() == 0 && minDist == 0) { vertex.setValue(new DoubleWritable(minDist)); for (Edge<LongWritable, FloatWritable> edge : vertex.getEdges()) { double distance = minDist + edge.getValue().get(); if (LOG.isDebugEnabled()) { LOG.debug( "Vertex " + vertex.getId() + " sent to " + edge.getTargetVertexId() + " = " + distance); } // INTENTIONAL BUG:Instead of sending the distance (i.e. by adding edge // values), // we send minDist, which is the vertex value. sendMessage(edge.getTargetVertexId(), new DoubleWritable(minDist)); } } if (previousValue > 3 && minDist <= 3) { aggregate(SimpleShortestPathsMaster.NV_DISTANCE_LESS_THAN_THREE_AGGREGATOR, new LongWritable(1)); } vertex.voteToHalt(); }