Tuesday 1 April 2014

Giraph Code to find maximum Value of node

Giraph Version:1.1.0
Hadoop Version: 0.20.203

Input Graph:
store it it tiny_graph.txt and upload it on HDFS
[0,5,[[1,1],[3,3]]]
[2,66,[[1,2],[4,4]]]
[1,25,[[0,1],[2,2],[3,1]]]
[3,85,[[0,3],[1,1],[4,4]]]
[4,125,[[3,4],[2,4]]]

Input Graph Pattern:  [VertexId,VertexValue,[EdgeDestinationVertexId,EdgeValue]....]


code:

package Success;
import java.io.IOException;

import org.apache.giraph.graph.BasicComputation;
import org.apache.giraph.graph.Vertex;
import org.apache.hadoop.io.DoubleWritable;
import org.apache.hadoop.io.FloatWritable;
import org.apache.hadoop.io.LongWritable;


public class MaxVal extends BasicComputation<LongWritable,DoubleWritable,FloatWritable,DoubleWritable>
 {

    @Override
    public void compute(
            Vertex<LongWritable, DoubleWritable, FloatWritable> v,
            Iterable<DoubleWritable> msg) throws IOException {
        // TODO Auto-generated method stub
        boolean changed=false;
       
        for(DoubleWritable messages :msg)
        {
           
           
            if(v.getValue().get() < messages.get())
            {
                v.setValue(messages);
                changed=true;
            }
        }
       
        if(getSuperstep()==0 | changed)
        {
            sendMessageToAllEdges(v,v.getValue());
        }
       
        v.voteToHalt();
    }

}

How to Compile:

copy this java file to:
$cp your_program.java /usr/local/giraph/giraph-examples/src/main/java/org/apache/giraph/examples/your_program.java

$cd /usr/local/giraph/giraph-examples/
$mvn compile


How to run:

hadoop jar /usr/local/giraph/giraph-examples/target/giraph-examples-1.1.0-SNAPSHOT-for-hadoop-1.2.1-jar-with-dependencies.jar org.apache.giraph.GiraphRunner MaxVal  -vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat -vof org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexOutputFormat -vip /input/tiny_graph.txt -op /output/MaxVal -w 1

What are arguments?
-vif    :    Graph input format
-vof   :    Graph output format
-vip    :    Graph input file path on HDFS
-op      :    Graph outout path on HDFS


No comments:

Post a Comment