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

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

Introduction

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

Prototype

public FloatWritable(float value) 

Source Link

Usage

From source file:org.apache.giraph.examples.TrianglesVertex.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());/*from ww  w. ja  v  a2  s. c  om*/

        // 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());
                }
            }
        }

        try {
            for (LongWritable edge : this) {
                removeEdgeRequest(getVertexId(), edge);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else if (getSuperstep() == 2) {
        try {
            /*for (LongWritable edge : this) {
                removeEdgeRequest(getVertexId(), edge);
            }*/

            for (int i = 0; i < triangles.size(); i += 2) {
                LongWritable one = new LongWritable(Long.parseLong(triangles.get(i)));
                LongWritable two = new LongWritable(Long.parseLong(triangles.get(i + 1)));

                addEdgeRequest(getVertexId(), new Edge(one, new FloatWritable(1)));
                addEdgeRequest(one, new Edge(getVertexId(), new FloatWritable(1)));
                addEdgeRequest(getVertexId(), new Edge(two, new FloatWritable(1)));
                addEdgeRequest(two, new Edge(getVertexId(), new FloatWritable(1)));
                addEdgeRequest(one, new Edge(two, new FloatWritable(1)));
                addEdgeRequest(two, new Edge(one, new FloatWritable(1)));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        LongWritable a = new LongWritable(1);
        LongWritable[] b = new LongWritable[1];

        b[0] = a;

        LongArrayWritable c = new LongArrayWritable(b);

        sendMsg(getVertexId(), c);
    } else {
        voteToHalt();
    }
}

From source file:org.apache.giraph.graph.LongDoubleFloatDoubleVertex.java

License:Apache License

@Override
public FloatWritable removeEdge(LongWritable targetVertexId) {
    long target = targetVertexId.get();
    if (verticesWithEdgeValues.containsKey(target)) {
        float value = verticesWithEdgeValues.get(target);
        verticesWithEdgeValues.removeKey(target);
        return new FloatWritable(value);
    } else {//from   w w  w  .  j a va 2s .c o m
        return null;
    }
}

From source file:org.apache.giraph.graph.LongDoubleFloatDoubleVertex.java

License:Apache License

@Override
public FloatWritable getEdgeValue(LongWritable targetVertexId) {
    return new FloatWritable(verticesWithEdgeValues.get(targetVertexId.get()));
}

From source file:org.apache.giraph.graph.TestByteValueVertex.java

License:Apache License

@Test
public void testCachedValue() {
    ByteValueVertex<LongWritable, FloatWritable, DoubleWritable> byteValueVertex = (ByteValueVertex<LongWritable, FloatWritable, DoubleWritable>) instantiateVertex(
            ArrayListEdges.class);

    FloatWritable origValue = new FloatWritable(492.2f);
    byteValueVertex.setValue(origValue);

    // Check value is correct
    assertEquals(492.2f, byteValueVertex.getValue().get(), 0.0f);

    // Change value and see it is reflected correctly
    FloatWritable gotValue = byteValueVertex.getValue();
    gotValue.set(33.3f);//from www .  j  a  v a2  s . c  o  m
    assertEquals(33.3f, byteValueVertex.getValue().get(), 0.0f);

    // Change the object and set that the cached value also changes
    FloatWritable newValue = new FloatWritable(99.9f);
    byteValueVertex.setValue(newValue);
    assertEquals(99.9f, byteValueVertex.getValue().get(), 0.0f);

    // Reference should be now newValue
    assertTrue(newValue == byteValueVertex.getValue());

    // Commit the changes... (called after vertex update)
    byteValueVertex.unwrapMutableEdges();

    // Now the value reference should be new
    assertFalse(newValue == byteValueVertex.getValue());

    // But value data should be correct
    assertEquals(99.9f, byteValueVertex.getValue().get(), 0.0f);
}

From source file:org.apache.giraph.graph.TestEdgeListVertex.java

License:Apache License

@Test
public void testSerialize() {
    Map<IntWritable, DoubleWritable> edgeMap = Maps.newHashMap();
    for (int i = 1000; i > 0; --i) {
        edgeMap.put(new IntWritable(i), new DoubleWritable(i * 2.0));
    }//w ww .j  ava2s.c o  m
    List<LongWritable> messageList = Lists.newArrayList();
    messageList.add(new LongWritable(4));
    messageList.add(new LongWritable(5));
    vertex.initialize(new IntWritable(2), new FloatWritable(3.0f), edgeMap, messageList);
    byte[] byteArray = WritableUtils.writeToByteArray(vertex);
    IFDLEdgeListVertex readVertex = (IFDLEdgeListVertex) BspUtils
            .<IntWritable, FloatWritable, DoubleWritable, LongWritable>createVertex(job.getConfiguration());
    WritableUtils.readFieldsFromByteArray(byteArray, readVertex);
    assertEquals(vertex, readVertex);
}

From source file:org.apache.giraph.graph.TestVertexAndEdges.java

License:Apache License

/**
 * Test vertex instantiation, initialization, and updating the vertex value.
 *//*www .java2s.c  om*/
@Test
public void testVertexIdAndValue() {
    Vertex<LongWritable, FloatWritable, DoubleWritable> vertex = instantiateVertex(ArrayListEdges.class);
    assertNotNull(vertex);
    vertex.initialize(new LongWritable(7), new FloatWritable(3.0f));
    assertEquals(7, vertex.getId().get());
    assertEquals(3.0f, vertex.getValue().get(), 0d);
    vertex.setValue(new FloatWritable(5.5f));
    assertEquals(5.5f, vertex.getValue().get(), 0d);
}

From source file:org.apache.giraph.graph.TestVertexAndEdges.java

License:Apache License

private void testEdgesClass(Class<? extends OutEdges> edgesClass) {
    Vertex<LongWritable, FloatWritable, DoubleWritable> vertex = instantiateVertex(edgesClass);
    OutEdges<LongWritable, DoubleWritable> outEdges = instantiateOutEdges(edgesClass);
    assertNotNull(outEdges);//from   ww w  .  j  a v a 2  s  . c o m

    List<Edge<LongWritable, DoubleWritable>> edges = Lists.newLinkedList();
    for (int i = 1000; i > 0; --i) {
        edges.add(EdgeFactory.create(new LongWritable(i), new DoubleWritable(i * 2.0)));
    }

    outEdges.initialize(edges);
    vertex.initialize(new LongWritable(1), new FloatWritable(1), outEdges);

    assertEquals(20.0, vertex.getEdgeValue(new LongWritable(10)).get(), 0.0);

    assertEquals(1000, vertex.getNumEdges());
    for (Edge<LongWritable, DoubleWritable> edge : vertex.getEdges()) {
        assertEquals(edge.getTargetVertexId().get() * 2.0d, edge.getValue().get(), 0d);
    }
    vertex.removeEdges(new LongWritable(500));
    assertEquals(999, vertex.getNumEdges());
    for (Edge<LongWritable, DoubleWritable> edge : vertex.getEdges()) {
        assertTrue(edge.getTargetVertexId().get() != 500);
    }

    vertex.setEdgeValue(new LongWritable(10), new DoubleWritable(33.0));
    assertEquals(33.0, vertex.getEdgeValue(new LongWritable(10)).get(), 0);
}

From source file:org.apache.giraph.graph.TestVertexAndEdges.java

License:Apache License

private void testMutateEdgesClass(Class<? extends OutEdges> edgesClass) {
    Vertex<LongWritable, FloatWritable, DoubleWritable> vertex = instantiateVertex(edgesClass);
    OutEdges<LongWritable, DoubleWritable> outEdges = instantiateOutEdges(edgesClass);

    outEdges.initialize();/*from   ww  w . j  av  a  2s . com*/
    vertex.initialize(new LongWritable(0), new FloatWritable(0), outEdges);

    // Add 10 edges with id i, value i for i = 0..9
    for (int i = 0; i < 10; ++i) {
        vertex.addEdge(EdgeFactory.create(new LongWritable(i), new DoubleWritable(i)));
    }

    // Use the mutable iterable to multiply each edge value by 2
    for (MutableEdge<LongWritable, DoubleWritable> edge : vertex.getMutableEdges()) {
        edge.setValue(new DoubleWritable(edge.getValue().get() * 2));
    }

    // We should still have 10 edges
    assertEquals(10, vertex.getNumEdges());
    // The edge values should now be double the ids
    for (Edge<LongWritable, DoubleWritable> edge : vertex.getEdges()) {
        long id = edge.getTargetVertexId().get();
        double value = edge.getValue().get();
        assertEquals(id * 2, value, 0);
    }

    // Use the mutable iterator to remove edges with even id
    Iterator<MutableEdge<LongWritable, DoubleWritable>> edgeIt = vertex.getMutableEdges().iterator();
    while (edgeIt.hasNext()) {
        if (edgeIt.next().getTargetVertexId().get() % 2 == 0) {
            edgeIt.remove();
        }
    }

    // We should now have 5 edges
    assertEquals(5, vertex.getNumEdges());
    // The edge ids should be all odd
    for (Edge<LongWritable, DoubleWritable> edge : vertex.getEdges()) {
        assertEquals(1, edge.getTargetVertexId().get() % 2);
    }

    // Breaking iteration early should not make us lose edges.
    // This version uses repeated calls to next():
    Iterator<MutableEdge<LongWritable, DoubleWritable>> it = vertex.getMutableEdges().iterator();
    it.next();
    it.next();
    assertEquals(5, vertex.getNumEdges());

    // This version uses a for-each loop, and the break statement:
    int i = 2;
    for (MutableEdge<LongWritable, DoubleWritable> edge : vertex.getMutableEdges()) {
        if (i-- == 0) {
            break;
        }
    }
    assertEquals(5, vertex.getNumEdges());

    // This version uses a normal, immutable iterable:
    i = 2;
    for (Edge<LongWritable, DoubleWritable> edge : vertex.getEdges()) {
        if (i-- == 0) {
            break;
        }
    }
    assertEquals(5, vertex.getNumEdges());

    // Calling size() during iteration shouldn't modify the data structure.
    int iterations = 0;
    for (MutableEdge<LongWritable, DoubleWritable> edge : vertex.getMutableEdges()) {
        edge.setValue(new DoubleWritable(3));
        assertEquals(5, vertex.getNumEdges());
        ++iterations;
    }
    assertEquals(5, vertex.getNumEdges());
    assertEquals(5, iterations);

    // If we remove an edge after calling next(), size() should return the
    // correct number of edges.
    it = vertex.getMutableEdges().iterator();
    it.next();
    it.remove();
    assertEquals(4, vertex.getNumEdges());
    it.next();
    it.remove();
    assertEquals(3, vertex.getNumEdges());
}

From source file:org.apache.giraph.graph.TestVertexAndEdges.java

License:Apache License

protected Vertex<LongWritable, FloatWritable, DoubleWritable> buildVertex(
        Class<? extends OutEdges> edgesClass) {
    Vertex<LongWritable, FloatWritable, DoubleWritable> vertex = instantiateVertex(edgesClass);
    OutEdges<LongWritable, DoubleWritable> outEdges = instantiateOutEdges(edgesClass);

    int edgesCount = 200;
    List<Edge<LongWritable, DoubleWritable>> edges = Lists.newArrayListWithCapacity(edgesCount);
    for (int i = edgesCount; i > 0; --i) {
        edges.add(EdgeFactory.create(new LongWritable(i), new DoubleWritable(i * 2.0)));
    }/*www  .  jav a  2 s. c  om*/

    outEdges.initialize(edges);
    vertex.initialize(new LongWritable(2), new FloatWritable(3.0f), outEdges);
    return vertex;
}

From source file:org.apache.giraph.partition.TestGiraphTransferRegulator.java

License:Apache License

@Test
public void testGiraphTransferRegulator() {
    job.getConfiguration().setInt(GiraphTransferRegulator.MAX_VERTICES_PER_TRANSFER, 1);
    job.getConfiguration().setInt(GiraphTransferRegulator.MAX_EDGES_PER_TRANSFER, 3);
    OutEdges<IntWritable, DoubleWritable> edges = new ArrayListEdges<IntWritable, DoubleWritable>();
    edges.initialize(3);// w  w  w .j  a  va 2s .co  m
    edges.add(EdgeFactory.create(new IntWritable(2), new DoubleWritable(22)));
    edges.add(EdgeFactory.create(new IntWritable(3), new DoubleWritable(33)));
    edges.add(EdgeFactory.create(new IntWritable(4), new DoubleWritable(44)));
    vertex.initialize(new IntWritable(1), new FloatWritable(1), edges);
    GiraphTransferRegulator gtr = new GiraphTransferRegulator(job.getConfiguration());
    PartitionOwner owner = mock(PartitionOwner.class);
    when(owner.getPartitionId()).thenReturn(57);
    assertFalse(gtr.transferThisPartition(owner));
    gtr.incrementCounters(owner, vertex);
    assertTrue(gtr.transferThisPartition(owner));
}