I' ll try it , thanks a lot. At 2014-01-13 00:02:28,"Young Han" <young....@uwaterloo.ca> wrote:
Hi, Another workaround is to use an abstract class as A and then implement it concretely in the two ways you need it. If I'm not mistaken, aggregators are the recommended way to communicate between master.compute() and (worker's) vertex.compute() in Giraph. I personally don't know if it's the *only* way. Young On Sun, Jan 12, 2014 at 5:30 AM, Luo <luo...@163.com> wrote: Hi, Young That is a choice. But I just want transform A or B when each vertex computing , now I need transform A and B. And in my program, the A and B are both somehow large. Is there another way to share global variable between each vertex beside getAggregatedValue() ? thanks a lot ! Luo At 2014-01-11 01:17:21,"Young Han" <young....@uwaterloo.ca> wrote: Hi, One way, though not a very clean way, would be to create an object that encapsulates what you want to store in A and B. So, say you want A to be a DoubleWritable and B to be a Writable object with two integers. Then you could just create a Writable object having three fields: double, int, int. You'll have to implement a custom Writable class, but you won't need a special aggregator. Young On Fri, Jan 10, 2014 at 2:54 AM, Luo <luo...@163.com> wrote: hi all: org.apache.giraph.aggregators has these tow methods: void aggregate(A value) A getAggregatedValue() Now I want to use aggregate() in vertex_program to send value of type A for global aggregating, however, I want the output of custom aggregator is type B . that is to say , void aggregate(A value) B getAggregatedValue() Is there any idea for this? Thank a lot ! ======================== Luo