List of usage examples for org.apache.hadoop.io FloatWritable FloatWritable
public FloatWritable(float value)
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)); }