Example usage for org.apache.hadoop.io DoubleWritable DoubleWritable

List of usage examples for org.apache.hadoop.io DoubleWritable DoubleWritable

Introduction

In this page you can find the example usage for org.apache.hadoop.io DoubleWritable DoubleWritable.

Prototype

public DoubleWritable() 

Source Link

Usage

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;
}