You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@giraph.apache.org by Luo <lu...@163.com> on 2014/01/10 08:54:36 UTC
About aggregator's input data type and output data type
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
Re:Re: Re: About aggregator's input data type and output data type
Posted by Luo <lu...@163.com>.
I' ll try it , thanks a lot.
At 2014-01-13 00:02:28,"Young Han" <yo...@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 <lu...@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" <yo...@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 <lu...@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
Re: Re: About aggregator's input data type and output data type
Posted by Young Han <yo...@uwaterloo.ca>.
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 <lu...@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" <yo...@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 <lu...@163.com> wrote:
>
>> hi all:
>> org.apache.giraph.aggregators has these tow methods: void aggregate<http://giraph.apache.org/giraph-core/apidocs/org/apache/giraph/aggregators/Aggregator.html#aggregate(A)>
>> (A<http://giraph.apache.org/giraph-core/apidocs/org/apache/giraph/aggregators/Aggregator.html>
>> value)
>> A getAggregatedValue<http://giraph.apache.org/giraph-core/apidocs/org/apache/giraph/aggregators/Aggregator.html#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
>>
>>
>>
>
>
>
Re:Re: About aggregator's input data type and output data type
Posted by Luo <lu...@163.com>.
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" <yo...@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 <lu...@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
Re: About aggregator's input data type and output data type
Posted by Young Han <yo...@uwaterloo.ca>.
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 <lu...@163.com> wrote:
> hi all:
> org.apache.giraph.aggregators has these tow methods: void aggregate<http://giraph.apache.org/giraph-core/apidocs/org/apache/giraph/aggregators/Aggregator.html#aggregate(A)>
> (A<http://giraph.apache.org/giraph-core/apidocs/org/apache/giraph/aggregators/Aggregator.html>
> value)
> A getAggregatedValue<http://giraph.apache.org/giraph-core/apidocs/org/apache/giraph/aggregators/Aggregator.html#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
>
>
>