Also, is the 0.2-SNAPSHOT src available anywhere or only 0.1 and the latest releases? I have the 0.2 JAR but not the source.
Thanks! Vernon On Wed, Sep 5, 2012 at 5:02 PM, Avery Ching <[email protected]> wrote: > Thanks for the report. This is a bug I think when there are no paths. Eli? > > Avery > > > On 9/4/12 10:46 PM, Vernon Thommeret wrote: >> >> Just want to follow up on this. I was running on the latest version of >> Giraph on Github when I was running into this issue. When I switched >> back to the Giraph 0.2-SNAPSHOT release, my program was able to run. >> >> Thanks, >> Vernon >> >> On Mon, Sep 3, 2012 at 12:44 AM, Vernon Thommeret <[email protected]> >> wrote: >>> >>> I'm getting started with Giraph and I have a basic program running >>> using the PseudoRandomVertexInputFormat. However, when I switch it to >>> the IntIntNullIntTextInputFormat and specify an input file, I get a >>> divide by zero error. I'm assuming that (1) I'm not setting this up >>> properly and (2) there should probably be a length check before the >>> division happens. >>> >>> This is the error I'm getting: >>> >>> java.lang.ArithmeticException: / by zero >>> at >>> org.apache.giraph.graph.LocalityInfoSorter.prioritizeLocalInputSplits(LocalityInfoSorter.java:107) >>> at >>> org.apache.giraph.graph.LocalityInfoSorter.<init>(LocalityInfoSorter.java:71) >>> at >>> org.apache.giraph.graph.BspServiceWorker.reserveInputSplit(BspServiceWorker.java:228) >>> at >>> org.apache.giraph.graph.BspServiceWorker.loadVertices(BspServiceWorker.java:317) >>> at >>> org.apache.giraph.graph.BspServiceWorker.setup(BspServiceWorker.java:604) >>> at >>> org.apache.giraph.graph.GraphMapper.setup(GraphMapper.java:368) >>> at org.apache.giraph.graph.GraphMapper.run(GraphMapper.java:569) >>> at >>> org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647) >>> at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323) >>> at org.apache.hadoop.mapred.Child$4.run(Child.java:270) >>> at java.security.AccessController.doPrivileged(Native Method) >>> at javax.security.auth.Subject.doAs(Subject.java:396) >>> at >>> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1157) >>> at org.apache.hadoop.mapred.Child.main(Child.java:264) >>> >>> This is the change that causes the program to no longer work: >>> >>> ------------------------------------ >>> >>> import org.apache.hadoop.io.LongWritable; >>> >>> import org.apache.giraph.graph.Edge; >>> -import org.apache.giraph.graph.EdgeListVertex; >>> +import org.apache.giraph.graph.IntIntNullIntVertex; >>> import org.apache.giraph.graph.GiraphJob; >>> -import org.apache.giraph.io.PseudoRandomVertexInputFormat; >>> +import org.apache.giraph.io.IntIntNullIntTextInputFormat; >>> import org.apache.giraph.io.AdjacencyListTextVertexOutputFormat; >>> >>> /** >>> * Simple function to return the in degree for each vertex. >>> */ >>> -public class SimpleInDegreeCountVertex extends EdgeListVertex< >>> - LongWritable, DoubleWritable, DoubleWritable, DoubleWritable> >>> - implements Tool { >>> +public class SimpleInDegreeCountVertex extends IntIntNullIntVertex >>> implements Tool { >>> >>> private Configuration conf; >>> >>> @Override >>> - public void compute(Iterable<DoubleWritable> messages) { >>> + public void compute(Iterable<IntWritable> messages) { >>> voteToHalt(); >>> } >>> >>> @@ -80,15 +78,11 @@ public class SimpleInDegreeCountVertex extends >>> EdgeListVertex< >>> GiraphJob job = new GiraphJob(getConf(), getClass().getName()); >>> >>> job.setVertexClass(SimpleInDegreeCountVertex.class); >>> - job.setVertexInputFormatClass(PseudoRandomVertexInputFormat.class); >>> + job.setVertexInputFormatClass(IntIntNullIntTextInputFormat.class); >>> >>> job.setVertexOutputFormatClass(AdjacencyListTextVertexOutputFormat.class); >>> job.setWorkerConfiguration(10, 10, 100.0f); >>> >>> - job.getConfiguration().setLong( >>> - PseudoRandomVertexInputFormat.AGGREGATE_VERTICES, 100l); >>> - job.getConfiguration().setLong( >>> - PseudoRandomVertexInputFormat.EDGES_PER_VERTEX, 2l); >>> - >>> + FileInputFormat.addInputPath(job.getInternalJob(), new >>> Path("connections/1.txt")); >>> FileOutputFormat.setOutputPath(job.getInternalJob(), new >>> Path("in_degree_output")); >>> >>> boolean isVerbose = cmd.hasOption('v'); >>> >>> ------------------------------------ >>> >>> "connections/1.txt" and "in_degree_output" are both in my home >>> directory. /connections/1.txt has the following content: >>> >>> 1 5 >>> 2 5 6 >>> 3 5 6 >>> 4 1 2 3 >>> >>> I've spent some time digging through the source and comparing to some >>> of the example classes, but I'm having trouble working this out. Any >>> thoughts? >>> >>> Thanks! >>> Vernon > >
