1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.giraph.examples;
20
21 import org.apache.giraph.graph.BasicComputation;
22 import org.apache.giraph.edge.Edge;
23 import org.apache.giraph.graph.Vertex;
24 import org.apache.hadoop.io.DoubleWritable;
25 import org.apache.hadoop.io.LongWritable;
26
27 import java.io.IOException;
28
29
30
31
32 @Algorithm(
33 name = "Indegree Count"
34 )
35 public class SimpleInDegreeCountComputation extends BasicComputation<
36 LongWritable, LongWritable, DoubleWritable, DoubleWritable> {
37
38 @Override
39 public void compute(
40 Vertex<LongWritable, LongWritable, DoubleWritable> vertex,
41 Iterable<DoubleWritable> messages) throws IOException {
42 if (getSuperstep() == 0) {
43 Iterable<Edge<LongWritable, DoubleWritable>> edges = vertex.getEdges();
44 for (Edge<LongWritable, DoubleWritable> edge : edges) {
45 sendMessage(edge.getTargetVertexId(), new DoubleWritable(1.0));
46 }
47 } else {
48 long sum = 0;
49 for (DoubleWritable message : messages) {
50 sum++;
51 }
52 LongWritable vertexValue = vertex.getValue();
53 vertexValue.set(sum);
54 vertex.setValue(vertexValue);
55 vertex.voteToHalt();
56 }
57 }
58 }