Another approach would be to use a custom InputFormat implementation, with the flag as a property of the input split . Consider wrapping your InputFormat with something like 'InputFormatWithFlag', that returns splits that combine the wrapped InputFormat's splits with your flag. Since InputFormat#getSplits is run in one process, your custom InputFormat can safely ensure that only one flag is set.

Brien




On 1/2/2010 11:08 PM, Mark Kerzner wrote:
I think you need some kind of semaphore that you can turn on by the first
reducer. For example, allocating a file in HDFS would work - if you could
guarantee that it is an atomic operation (create-if-does-not-exist).

Mark

On Sat, Jan 2, 2010 at 10:04 PM, bharath v<
bharathvissapragada1...@gmail.com>  wrote:

Hi,

I want a particular "section of code" to run only in any "ONE" of the
mappers . So I employed the following procedure.

Main-Class
{

        public boolean flag = true;

        Map-Class
       {
             if(flag)
            {

                flag=false;
               /* section of code */
            }


}

I am running this code on in pseudo-distributed mode and its working fine .
I doubt whether this runs correctly in distributed mode because , mappers
on
other systems have to notified of the changed "flag" .. Any Comments ? If
this is wrong , any suggestions on what method I must follow to achieve
this
functionality in D-mode .

Thanks


Reply via email to