Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
MapReduce, mail # user - MAP_INPUT_RECORDS counter in the reducer


Copy link to this message
-
Re: MAP_INPUT_RECORDS counter in the reducer
Rahul Bhattacharjee 2013-09-18, 03:09
Shahab,

One question - You mentioned - "In the normal configuration, the issue here
is that Reducers can start before all the Maps have finished so it is not
possible to get the number (or make sense of it even if you are able to,)"

I think , reducers would start copying the data form the completed map
tasks , but will not start the actual reduce process until data from all
the mappers are pulled in.

So , the call to the counter Yorn has made might work.If invoked from the
reduce method.

Thanks,
Rahul

On Wed, Sep 18, 2013 at 7:38 AM, java8964 java8964 <[EMAIL PROTECTED]>wrote:

> Or you do the calculation in the reducer close() method, even though I am
> not sure in the reducer you can get the Mapper's count.
>
> But even you can't, here is what can do:
> 1) Save the JobConf reference in your Mapper conf metehod
> 2) Store the Map_INPUT_RECORDS counter in the configuration object as your
> own properties, in the close() method of the mapper
> 3) Retrieve that property in the reducer close() method, then you have
> both numbers at that time.
>
> Yong
>
> ------------------------------
> Date: Tue, 17 Sep 2013 09:49:06 -0400
> Subject: Re: MAP_INPUT_RECORDS counter in the reducer
> From: [EMAIL PROTECTED]
> To: [EMAIL PROTECTED]
>
>
> In the normal configuration, the issue here is that Reducers can start
> before all the Maps have finished so it is not possible to get the number
> (or make sense of it even if you are able to,)
>
> Having said that, you can specifically make sure that Reducers don't start
> until all your maps have completed. It will of course slow down your job. I
> don't know whether with this option it will work or not, but you can try
> (until experts have some advise already.)
>
> Regards,
> Shahab
>
>
> On Tue, Sep 17, 2013 at 6:09 AM, Yaron Gonen <[EMAIL PROTECTED]>wrote:
>
> Hi,
> Is there a way for the reducer to get the total number of input records to
> the map phase?
> For example, I want the reducer to normalize a sum by dividing it in the
> number of records. I tried getting the value of that counter by using the
> line:
>
> context.getCounter(Task.Counter.MAP_INPUT_RECORDS).getValue();
>
> in the reducer code, but I got 0.
>
> Thanks!
> Yaron
>
>
>