Your are welcome. If you don't mind me asking, what are you using Giraph for? Class project or on the job?
On Fri, Jan 10, 2014 at 4:22 AM, Jyoti Yadav <[email protected]>wrote: > Thanks a lot Ameya...It really worked..:). > > > On Fri, Jan 10, 2014 at 2:32 PM, Jyoti Yadav > <[email protected]>wrote: > >> >> >> ---------- Forwarded message ---------- >> From: Ameya Vilankar <[email protected]> >> Date: Fri, Jan 10, 2014 at 1:43 PM >> Subject: Re: Writing my own aggregator.. >> To: Jyoti Yadav <[email protected]> >> >> >> This should solve it I think. If it doesn't email me the error. >> >> // MyArrayWritable.java >> >> package org.apache.giraph.examples.utils; >> >> import java.io.*; >> import org.apache.hadoop.io.Writable; >> import org.apache.hadoop.io.LongWritable; >> import org.apache.hadoop.io.WritableComparator; >> import java.util.Arrays; >> import java.util.*; >> >> public class MyArrayWritable implements Writable { >> >> private ArrayList<Long> arraylist; >> >> public MyArrayWritable() >> { >> arraylist = new ArrayList<Long>(); >> } >> >> public MyArrayWritable(long toAdd) >> { >> arraylist = new ArrayList<Long>(); >> arraylist.add(toAdd); >> } >> >> public ArrayList<Long> get_arraylist() >> { >> return arraylist; >> } >> >> public void set_arraylist(ArrayList al) >> { >> this.arraylist = al; >> } >> >> @Override >> public void readFields(DataInput in) throws IOException { >> >> int size = in.readInt(); >> >> arraylist = new ArrayList<Long>(size); >> >> for(int i = 0; i < size; i++) >> { >> arraylist.add(in.readLong()); >> } >> } >> >> @Override >> public void write(DataOutput out) throws IOException { >> >> out.writeInt(arraylist.size()); >> >> for(int i = 0; i < arraylist.size(); i++) >> { >> out.writeLong(arraylist.get(i)); >> } >> } >> >> @Override >> public String toString() >> { >> return "output is "+ Long.toString(item) + "\n"; >> } >> } >> >> >> 2.MyArrayAggregator.java >> >> package org.apache.giraph.examples.utils; >> import org.apache.giraph.aggregators.BasicAggregator; >> import java.util.*; >> >> public class MyArrayAggregator extends BasicAggregator<MyArrayWritable> { >> @Override >> public void aggregate(MyArrayWritable value) { >> getAggregatedValue().get_arraylist().addAll(value); >> } >> >> @Override >> public MyArrayWritable createInitialValue() { >> return new MyArrayWritable(); >> } >> } >> >> >> On Fri, Jan 10, 2014 at 1:27 AM, Jyoti Yadav >> <[email protected]>wrote: >> >>> Hi Ameya.. >>> >>> I am badly stuck while implementing my custom aggregator.. >>> In my program i want to send each vertex id to master. >>> For that i took an arraylist, in which each vertex is adding its own >>> id.while running the program,each vertex calls aggregate() function..As per >>> my observation it is working fine in vertex compute method.But while >>> retrieving back in master compute function.arraylist is not reflected back >>> to master compute function. >>> >>> I am attaching two files below..You are requested to please check it >>> once.. >>> >>> *1.MyArrayWritable.java* >>> >>> package org.apache.giraph.examples.utils; >>> >>> import java.io.*; >>> import org.apache.hadoop.io.Writable; >>> import org.apache.hadoop.io.LongWritable; >>> import org.apache.hadoop.io.WritableComparator; >>> import java.util.Arrays; >>> import java.util.*; >>> >>> >>> public class MyArrayWritable implements Writable { >>> >>> private long item; >>> private ArrayList<Long> arraylist=new ArrayList<Long>(5); >>> >>> public MyArrayWritable() >>> { >>> item=0; >>> >>> >>> //arraylist=new ArrayList<Long>(5); >>> arraylist.add(item); >>> >>> } >>> >>> public MyArrayWritable(long item1) >>> { >>> >>> item=item1; >>> //arraylist=new ArrayList<Long>(5); >>> arraylist.add(item); >>> >>> } >>> >>> >>> public ArrayList<Long> get_arraylist() { return arraylist; } >>> public void set_arraylist(ArrayList al) >>> { >>> //this.arraylist=new ArrayList<Long>(al); >>> this.arraylist=al; >>> } >>> public long get_item(){return item;} >>> >>> @Override >>> public void readFields(DataInput in) throws IOException { >>> item=in.readLong(); >>> int size=arraylist.size(); >>> size=in.readInt(); >>> >>> arraylist=new ArrayList<Long>(5); >>> >>> for(int i=0;i<size;i++) >>> { >>> arraylist.add(in.readLong()); >>> } >>> } >>> @Override >>> public void write(DataOutput out) throws IOException { >>> out.writeLong(item); >>> >>> out.writeInt(arraylist.size()); >>> >>> >>> for(int i=0;i<arraylist.size();i++) >>> { >>> out.writeLong(arraylist.get(i)); >>> } >>> >>> >>> } >>> >>> @Override >>> public String toString() >>> { >>> return "output is "+ Long.toString(item) + "\n"; >>> } >>> >>> >>> >>> } >>> >>> >>> 2.MyArrayAggregator.java >>> >>> package org.apache.giraph.examples.utils; >>> import org.apache.giraph.aggregators.BasicAggregator; >>> import java.util.*; >>> >>> >>> public class MyArrayAggregator extends BasicAggregator<MyArrayWritable> { >>> @Override >>> public void aggregate(MyArrayWritable value) { >>> ArrayList<Long> al=new ArrayList<Long>(); >>> (getAggregatedValue().get_arraylist()).add(value.get_item()); >>> al=getAggregatedValue().get_arraylist(); >>> getAggregatedValue().set_arraylist(al); >>> >>> } >>> >>> @Override >>> public MyArrayWritable createInitialValue() { >>> return new MyArrayWritable(); >>> } >>> } >>> >>> Thanks in advance ... >>> Jyoti >>> >> >> >> >
