List of usage examples for org.apache.hadoop.io DoubleWritable DoubleWritable
public DoubleWritable()
From source file:org.apache.giraph.aggregators.DoubleAverageAggregator.java
License:Apache License
@Override public DoubleWritable createAggregatedValue() { return new DoubleWritable(); }
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 .j a v a 2 s . c o m*/ 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
@Override public VertexReceiver<I, V, E, DoubleWritable> getVertexReceiver(final BlockWorkerReceiveApi<I> workerApi, Object executionStage) {/*w ww .j a va 2s . c o m*/ double sinkSum = superstepPageRankSinks.getBroadcast(workerApi).get(); double allSum = superstepPageRankAll.getBroadcast(workerApi).get(); DoubleWritable reusableDoubleWritable = new DoubleWritable(); return (vertex, messages) -> { double newValue = calculateNewValue(workerApi.getTotalNumVertices(), sinkSum, allSum, messages); reusableDoubleWritable.set(newValue); valueTransfer.apply(reusableDoubleWritable); }; }
From source file:org.apache.giraph.block_app.library.pagerank.PageRankTest.java
License:Apache License
public static void addVertex(int id, long[] edges, double[] weights, TestGraph<LongWritable, DoubleWritable, DoubleWritable> graph) { Vertex<LongWritable, DoubleWritable, DoubleWritable> v = graph.getConf().createVertex(); v.setConf(graph.getConf());//from w w w .jav a 2 s .c om v.initialize(new LongWritable(id), new DoubleWritable(), newEdges(edges, weights)); graph.addVertex(v); }
From source file:org.apache.giraph.block_app.library.prepare_graph.PrepareGraphPieces.java
License:Apache License
public static Block normalizeDoubleEdges() { ObjectTransfer<DoubleWritable> sumEdgeWeights = new ObjectTransfer<>(); ObjectTransfer<LongWritable> countEdges = new ObjectTransfer<>(); return new DelegatePiece<>(calcSumEdgesPiece(DoubleWritable::get, sumEdgeWeights), countTotalEdgesPiece(countEdges), new Piece<WritableComparable, Writable, DoubleWritable, NoMessage, Object>() { private double averageEdgeWeight; @Override//from w ww.ja v a 2 s. c o m public void masterCompute(BlockMasterApi master, Object executionStage) { averageEdgeWeight = sumEdgeWeights.get().get() / countEdges.get().get(); LOG.info("Averge edge weight " + averageEdgeWeight); } @Override public VertexReceiver<WritableComparable, Writable, DoubleWritable, NoMessage> getVertexReceiver( BlockWorkerReceiveApi<WritableComparable> workerApi, Object executionStage) { DoubleWritable doubleWritable = new DoubleWritable(); return (vertex, messages) -> { for (MutableEdge<WritableComparable, DoubleWritable> edge : vertex.getMutableEdges()) { doubleWritable.set((float) (edge.getValue().get() / averageEdgeWeight)); edge.setValue(doubleWritable); } }; } @Override public String toString() { return "NormalizeDoubleEdges"; } }); }
From source file:org.apache.giraph.block_app.library.ReusableSuppliers.java
License:Apache License
/** * Transforms primitive double supplier into * DoubleWritable supplier, with object being reused, * to minimize GC overhead.//w ww . j a v a 2 s .c o m */ public static <I extends WritableComparable, V extends Writable, E extends Writable> SupplierFromVertex<I, V, E, DoubleWritable> fromDouble( Obj2DoubleFunction<Vertex<I, V, E>> supplier) { DoubleWritable reusable = new DoubleWritable(); return (vertex) -> { reusable.set(supplier.apply(vertex)); return reusable; }; }
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();// w w w . j a va 2 s.com 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.comm.messages.with_source.primitives.DoubleMessagesIterable.java
License:Apache License
@Override public Iterator<DoubleWritable> iterator() { return new Iterator<DoubleWritable>() { /** Representative writable */ private final DoubleWritable representativeWritable = new DoubleWritable(); @Override/*from w w w .ja v a 2s.c om*/ public boolean hasNext() { return itr.hasNext(); } @Override public DoubleWritable next() { representativeWritable.set(itr.nextDouble()); return representativeWritable; } @Override public void remove() { throw new UnsupportedOperationException("remove: Not supported"); } }; }
From source file:org.apache.giraph.edge.LongDoubleArrayEdges.java
License:Apache License
@Override public Iterator<Edge<LongWritable, DoubleWritable>> iterator() { // Returns an iterator that reuses objects. return new UnmodifiableIterator<Edge<LongWritable, DoubleWritable>>() { /** Wrapped neighbors iterator. */ private final LongIterator neighborsIt = neighbors.iterator(); /** Wrapped edge values iterator. */ private final DoubleIterator edgeValuesIt = edgeValues.iterator(); /** Representative edge object. */ private final Edge<LongWritable, DoubleWritable> representativeEdge = EdgeFactory .create(new LongWritable(), new DoubleWritable()); @Override/* w ww . j a v a 2s. com*/ public boolean hasNext() { return neighborsIt.hasNext(); } @Override public Edge<LongWritable, DoubleWritable> next() { representativeEdge.getTargetVertexId().set(neighborsIt.nextLong()); representativeEdge.getValue().set(edgeValuesIt.nextDouble()); return representativeEdge; } }; }
From source file:org.apache.giraph.edge.LongDoubleHashMapEdges.java
License:Apache License
@Override public DoubleWritable getEdgeValue(LongWritable targetVertexId) { if (!edgeMap.containsKey(targetVertexId.get())) { return null; }//from w w w. ja va 2 s .c om if (representativeEdgeValue == null) { representativeEdgeValue = new DoubleWritable(); } representativeEdgeValue.set(edgeMap.get(targetVertexId.get())); return representativeEdgeValue; }