---------- Forwarded message ----------
From: Ameya Vilankar <ameya.vilan...@gmail.com>
Date: Fri, Jan 10, 2014 at 1:43 PM
Subject: Re: Writing my own aggregator..
To: Jyoti Yadav <rao.jyoti26ya...@gmail.com>


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 <rao.jyoti26ya...@gmail.com>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
>

Reply via email to