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(double value) 

Source Link

Usage

From source file:org.apache.giraph.examples.GlobalClusteringCoefficientVertex.java

License:Apache License

@Override
public void compute(Iterator<LongArrayWritable> msgIterator) {
    DoubleSumAggregator trianglesum = (DoubleSumAggregator) getAggregator("trianglesum");
    DoubleSumAggregator triples = (DoubleSumAggregator) getAggregator("triples");
    if (getSuperstep() == 0) {
        // Each vertex this is connected to

        List<LongWritable> verticesl = new ArrayList<LongWritable>();

        // This is so we know which vertex the messages came from
        verticesl.add(getVertexId());/*from  w ww.j a v a2 s.  com*/

        // Find all connected vertices with ID less than current vertex
        for (LongWritable targetVertexId : this) {
            if (targetVertexId.get() < getVertexId().get()) {
                verticesl.add(targetVertexId);
            }
        }

        // Need to send list to other vertices, must convert to arraywritable
        LongWritable[] verticesa = verticesl.toArray(new LongWritable[0]);
        LongArrayWritable vertices = new LongArrayWritable(verticesa);

        // Sends list of smaller ID vertices to bigger ID vertices
        for (LongWritable targetVertexId : this) {
            if (targetVertexId.get() > getVertexId().get()) {
                sendMsg(targetVertexId, vertices);
            }
        }
    } else if (getSuperstep() == 1) {
        while (msgIterator.hasNext()) {
            LongArrayWritable law = msgIterator.next();
            Writable[] vertices = law.get();
            LongWritable source = (LongWritable) vertices[0];

            for (int i = 1; i < vertices.length; i++) {
                if (hasEdge((LongWritable) vertices[i])) {
                    double num = getVertexValue().get();
                    setVertexValue(new DoubleWritable(1.0 + num));

                    LongWritable[] one = new LongWritable[] { new LongWritable(1) };
                    LongArrayWritable inc = new LongArrayWritable(one);

                    sendMsg(source, inc);
                    sendMsg(((LongWritable) vertices[i]), inc);

                    triangles.add(source.toString());
                    triangles.add(vertices[i].toString());
                }
            }
        }
    } else if (getSuperstep() == 2) {
        while (msgIterator.hasNext()) {
            LongArrayWritable law = msgIterator.next();
            Writable[] msg = law.get();
            LongWritable value = (LongWritable) msg[0];

            double num = getVertexValue().get();
            setVertexValue(new DoubleWritable(num + value.get()));
        }

        trianglesum.aggregate(getVertexValue());

        double sum = 0.0;
        for (LongWritable source : this) {
            for (LongWritable target : this) {
                if (source.get() > target.get()) {
                    sum++;
                }
            }
        }

        triples.aggregate(new DoubleWritable(sum));
    } else {
        setVertexValue(new DoubleWritable(
                trianglesum.getAggregatedValue().get() / triples.getAggregatedValue().get()));

        voteToHalt();
    }
}

From source file:org.apache.giraph.examples.InDegreeCentralityVertex.java

License:Apache License

@Override
public void compute(Iterator<LongWritable> msgIterator) {
    if (getSuperstep() == 0) {
        for (LongWritable targetVertexId : this) {
            sendMsg(targetVertexId, new LongWritable(1));
        }/*  ww  w.jav a2s  .  c  o  m*/
    } else {
        double sum = 0;
        while (msgIterator.hasNext()) {
            sum++;
            msgIterator.next();
        }

        setVertexValue(new DoubleWritable(sum));

        voteToHalt();
    }
}

From source file:org.apache.giraph.examples.LocalClusteringCoefficientVertex.java

License:Apache License

@Override
public void compute(Iterator<LongArrayWritable> msgIterator) {
    if (getSuperstep() == 0) {
        // Each vertex this is connected to

        List<LongWritable> verticesl = new ArrayList<LongWritable>();

        // This is so we know which vertex the messages came from
        verticesl.add(getVertexId());/* w  w w .java2  s . c  o m*/

        // Find all connected vertices with ID less than current vertex
        for (LongWritable targetVertexId : this) {
            if (targetVertexId.get() < getVertexId().get()) {
                verticesl.add(targetVertexId);
            }
        }

        // Need to send list to other vertices, must convert to arraywritable
        LongWritable[] verticesa = verticesl.toArray(new LongWritable[0]);
        LongArrayWritable vertices = new LongArrayWritable(verticesa);

        // Sends list of smaller ID vertices to bigger ID vertices
        for (LongWritable targetVertexId : this) {
            if (targetVertexId.get() > getVertexId().get()) {
                sendMsg(targetVertexId, vertices);
            }
        }
    } else if (getSuperstep() == 1) {
        while (msgIterator.hasNext()) {
            LongArrayWritable law = msgIterator.next();
            Writable[] vertices = law.get();
            LongWritable source = (LongWritable) vertices[0];

            for (int i = 1; i < vertices.length; i++) {
                if (hasEdge((LongWritable) vertices[i])) {
                    double num = getVertexValue().get();
                    setVertexValue(new DoubleWritable(1.0 + num));

                    LongWritable[] one = new LongWritable[] { new LongWritable(1) };
                    LongArrayWritable inc = new LongArrayWritable(one);

                    sendMsg(source, inc);
                    sendMsg(((LongWritable) vertices[i]), inc);

                    triangles.add(source.toString());
                    triangles.add(vertices[i].toString());
                }
            }
        }
    } else {
        while (msgIterator.hasNext()) {
            LongArrayWritable law = msgIterator.next();
            Writable[] msg = law.get();
            LongWritable value = (LongWritable) msg[0];

            double num = getVertexValue().get();
            setVertexValue(new DoubleWritable(num + value.get()));
        }

        int sum = 0;
        for (LongWritable source : this) {
            for (LongWritable target : this) {
                if (source.get() > target.get()) {
                    sum++;
                }
            }
        }

        if (sum > 0) {
            setVertexValue(new DoubleWritable(getVertexValue().get() / sum));
        }

        voteToHalt();
    }
}

From source file:org.apache.giraph.examples.MaxAggregator.java

License:Apache License

public DoubleWritable getAggregatedValue() {
    return new DoubleWritable(max);
}

From source file:org.apache.giraph.examples.MinAggregator.java

License:Apache License

public DoubleWritable getAggregatedValue() {
    return new DoubleWritable(min);
}

From source file:org.apache.giraph.examples.NetworkLocalClusteringCoefficientVertex.java

License:Apache License

@Override
public void compute(Iterator<LongArrayWritable> msgIterator) {
    DoubleSumAggregator sumAggreg = (DoubleSumAggregator) getAggregator("sum");
    if (getSuperstep() == 0) {
        // Each vertex this is connected to

        List<LongWritable> verticesl = new ArrayList<LongWritable>();

        // This is so we know which vertex the messages came from
        verticesl.add(getVertexId());/*from   w w  w . j  ava 2s.co  m*/

        // Find all connected vertices with ID less than current vertex
        for (LongWritable targetVertexId : this) {
            if (targetVertexId.get() < getVertexId().get()) {
                verticesl.add(targetVertexId);
            }
        }

        // Need to send list to other vertices, must convert to arraywritable
        LongWritable[] verticesa = verticesl.toArray(new LongWritable[0]);
        LongArrayWritable vertices = new LongArrayWritable(verticesa);

        // Sends list of smaller ID vertices to bigger ID vertices
        for (LongWritable targetVertexId : this) {
            if (targetVertexId.get() > getVertexId().get()) {
                sendMsg(targetVertexId, vertices);
            }
        }
    } else if (getSuperstep() == 1) {
        while (msgIterator.hasNext()) {
            LongArrayWritable law = msgIterator.next();
            Writable[] vertices = law.get();
            LongWritable source = (LongWritable) vertices[0];

            for (int i = 1; i < vertices.length; i++) {
                if (hasEdge((LongWritable) vertices[i])) {
                    double num = getVertexValue().get();
                    setVertexValue(new DoubleWritable(1.0 + num));

                    LongWritable[] one = new LongWritable[] { new LongWritable(1) };
                    LongArrayWritable inc = new LongArrayWritable(one);

                    sendMsg(source, inc);
                    sendMsg(((LongWritable) vertices[i]), inc);

                    triangles.add(source.toString());
                    triangles.add(vertices[i].toString());
                }
            }
        }
    } else if (getSuperstep() == 2) {
        while (msgIterator.hasNext()) {
            LongArrayWritable law = msgIterator.next();
            Writable[] msg = law.get();
            LongWritable value = (LongWritable) msg[0];

            double num = getVertexValue().get();
            setVertexValue(new DoubleWritable(num + value.get()));
        }

        int sum = 0;
        for (LongWritable source : this) {
            for (LongWritable target : this) {
                if (source.get() > target.get()) {
                    sum++;
                }
            }
        }

        if (sum > 0) {
            setVertexValue(new DoubleWritable(getVertexValue().get() / sum));
        }

        sumAggreg.aggregate(getVertexValue());
    } else {
        setVertexValue(new DoubleWritable(sumAggreg.getAggregatedValue().get() / getNumVertices()));

        voteToHalt();
    }
}

From source file:org.apache.giraph.examples.newSPath.java

License:Apache License

@Override
public void compute(Iterator<DoubleWritable> msgIterator) {
    if (getSuperstep() == 0) {
        setVertexValue(new DoubleWritable(Double.MAX_VALUE));
    }//from  www  . j  a va 2s. c  o  m
    double minDist = isSource() ? 0d : Double.MAX_VALUE;
    while (msgIterator.hasNext()) {
        minDist = Math.min(minDist, msgIterator.next().get());
    }
    if (LOG.isDebugEnabled()) {
        LOG.debug("Vertex " + getVertexId() + " got minDist = " + minDist + " vertex value = "
                + getVertexValue());
    }
    if (minDist < getVertexValue().get()) {
        setVertexValue(new DoubleWritable(minDist));
        for (LongWritable targetVertexId : this) {
            FloatWritable edgeValue = getEdgeValue(targetVertexId);
            if (LOG.isDebugEnabled()) {
                LOG.debug("Vertex " + getVertexId() + " sent to " + targetVertexId + " = "
                        + (minDist + edgeValue.get()));
            }
            if (!isdestination())
                sendMsg(targetVertexId, new DoubleWritable(minDist + edgeValue.get()));
        }
    }
    voteToHalt();
}

From source file:org.apache.giraph.examples.OutDegreeCentralityVertex.java

License:Apache License

@Override
public void compute(Iterator<LongWritable> msgIterator) {
    if (getSuperstep() == 0) {
        setVertexValue(new DoubleWritable(getNumOutEdges()));

        voteToHalt();//w w w.  j  av  a  2s  .c  o m
    }
}

From source file:org.apache.giraph.examples.pagerank.java

License:Apache License

/**
 * Is this vertex the source id?//www.j a v  a2 s .  com
 *
 * @param vertex Vertex
 * @return True if the source id
 */

@Override
public void compute(Vertex<LongWritable, DoubleWritable, FloatWritable> vertex,
        Iterable<DoubleWritable> messages) throws IOException {
    if (getSuperstep() == 0) {
        vertex.setValue(new DoubleWritable(1f / getTotalNumVertices()));
    }
    if (getSuperstep() >= 1) {
        double sum = 0;
        for (DoubleWritable message : messages) {
            sum += message.get();
        }
        DoubleWritable vertexValue = new DoubleWritable((0.15f / getTotalNumVertices()) + 0.85f * sum);
        vertex.setValue(vertexValue);
    }

    if (getSuperstep() < 3) {
        long edges = vertex.getNumEdges();
        if (edges == 0)
            sendMessageToAllEdges(vertex, new DoubleWritable(vertex.getValue().get() / getTotalNumVertices()));
        else {
            for (Edge<LongWritable, FloatWritable> edge : vertex.getEdges()) {
                sendMessage(edge.getTargetVertexId(), new DoubleWritable(vertex.getValue().get() / edges));
            }
        }
    } else {
        vertex.voteToHalt();
    }
}

From source file:org.apache.giraph.examples.pagerank.java

License:Apache License

@Override
public void compute(Vertex<LongWritable, DoubleWritable, FloatWritable> vertex,
        Iterable<DoubleWritable> messages) throws IOException {
    if (getSuperstep() == 0) {
        vertex.setValue(1f / getTotalNumVertices());
    }/* w  ww . j av  a  2  s.  co m*/
    if (getSuperstep() >= 1) {
        double sum = 0;
        for (DoubleWritable message : messages) {
            sum += message.get();
        }
        DoubleWritable vertexValue = new DoubleWritable((0.15f / getTotalNumVertices()) + 0.85f * sum);
        vertex.setValue(1f);
        aggregate(MAX_AGG, vertexValue);
        aggregate(MIN_AGG, vertexValue);
        aggregate(SUM_AGG, new LongWritable(1));
    }

    if (getSuperstep() < 10) {
        long edges = vertex.getNumEdges();
        if (edges == 0)
            sendMessageToAllEdges(vertex, new DoubleWritable(vertex.getValue().get() / getTotalNumVertices()));
        else {
            for (Edge<LongWritable, FloatWritable> edge : vertex.getEdges()) {
                sendMessage(edge.getTargetVertexId(), new DoubleWritable(vertex.getValue().get() / edges));
            }
        }
    } else {
        vertex.voteToHalt();
    }
}