Thank you all so much. That works. I made a stupid mistake with the naming of a local variable. so the error. :(
On Thu, Feb 5, 2009 at 9:49 AM, Tom White <[email protected]> wrote: > Try moving the enum to inside the top level class (as you already did) > and then use getCounter() passing the enum value: > > public class MyJob { > > static enum MyCounter{ct_key1}; > > // Mapper and Reducer defined here > > public static void main(String[] args) throws IOException { > // ... > RunningJob running =JobClient.runJob(conf); > Counters ct = running.getCounters(); > long res = ct.getCounter(MyCounter.ct_key1); > // ... > } > > } > > BTW org.apache.hadoop.mapred.Task$Counter is a built-in MapReduce > counter, so that won't help you retrieve your custom counter. > > Cheers, > > Tom > > On Thu, Feb 5, 2009 at 2:22 PM, Rasit OZDAS <[email protected]> wrote: > > Sharath, > > > > You're using reporter.incrCounter(enumVal, intVal); to increment > counter, > > I think method to get should also be similar. > > > > Try to use findCounter(enumVal).getCounter() or getCounter(enumVal). > > > > Hope this helps, > > Rasit > > > > 2009/2/5 some speed <[email protected]>: > >> In fact I put the enum in my Reduce method as the following link (from > >> Yahoo) says so: > >> > >> > http://public.yahoo.com/gogate/hadoop-tutorial/html/module5.html#metrics > >> --->Look at the section under Reporting Custom Metrics. > >> > >> 2009/2/5 some speed <[email protected]> > >> > >>> Thanks Rasit. > >>> > >>> I did as you said. > >>> > >>> 1) Put the static enum MyCounter{ct_key1} just above main() > >>> > >>> 2) Changed result = > >>> ct.findCounter("org.apache.hadoop.mapred.Task$Counter", 1, > >>> "Reduce.MyCounter").getCounter(); > >>> > >>> Still is doesnt seem to help. It throws a null pointer exception.Its > not > >>> able to find the Counter. > >>> > >>> > >>> > >>> Thanks, > >>> > >>> Sharath > >>> > >>> > >>> > >>> > >>> On Thu, Feb 5, 2009 at 8:04 AM, Rasit OZDAS <[email protected]> > wrote: > >>> > >>>> Forgot to say, value "0" means that the requested counter does not > exist. > >>>> > >>>> 2009/2/5 Rasit OZDAS <[email protected]>: > >>>> > Sharath, > >>>> > I think the static enum definition should be out of Reduce class. > >>>> > Hadoop probably tries to find it elsewhere with "MyCounter", but > it's > >>>> > actually "Reduce.MyCounter" in your example. > >>>> > > >>>> > Hope this helps, > >>>> > Rasit > >>>> > > >>>> > 2009/2/5 some speed <[email protected]>: > >>>> >> I Tried the following...It gets compiled but the value of result > seems > >>>> to be > >>>> >> 0 always. > >>>> >> > >>>> >> RunningJob running = JobClient.runJob(conf); > >>>> >> > >>>> >> Counters ct = new Counters(); > >>>> >> ct = running.getCounters(); > >>>> >> > >>>> >> long result = > >>>> >> ct.findCounter("org.apache.hadoop.mapred.Task$Counter", 0, > >>>> >> "*MyCounter*").getCounter(); > >>>> >> //even tried MyCounter.Key1 > >>>> >> > >>>> >> > >>>> >> > >>>> >> Does anyone know whay that is happening? > >>>> >> > >>>> >> Thanks, > >>>> >> > >>>> >> Sharath > >>>> >> > >>>> >> > >>>> >> > >>>> >> On Thu, Feb 5, 2009 at 5:59 AM, some speed <[email protected]> > >>>> wrote: > >>>> >> > >>>> >>> Hi Tom, > >>>> >>> > >>>> >>> I get the error : > >>>> >>> > >>>> >>> Cannot find Symbol* "**MyCounter.ct_key1 " * > >>>> >>> > >>>> >>> > >>>> >>> > >>>> >>> > >>>> >>> > >>>> >>> > >>>> >>> On Thu, Feb 5, 2009 at 5:51 AM, Tom White <[email protected]> > wrote: > >>>> >>> > >>>> >>>> Hi Sharath, > >>>> >>>> > >>>> >>>> The code you posted looks right to me. Counters#getCounter() will > >>>> >>>> return the counter's value. What error are you getting? > >>>> >>>> > >>>> >>>> Tom > >>>> >>>> > >>>> >>>> On Thu, Feb 5, 2009 at 10:09 AM, some speed < > [email protected]> > >>>> wrote: > >>>> >>>> > Hi, > >>>> >>>> > > >>>> >>>> > Can someone help me with the usage of counters please? I am > >>>> incrementing > >>>> >>>> a > >>>> >>>> > counter in Reduce method but I am unable to collect the counter > >>>> value > >>>> >>>> after > >>>> >>>> > the job is completed. > >>>> >>>> > > >>>> >>>> > Its something like this: > >>>> >>>> > > >>>> >>>> > public static class Reduce extends MapReduceBase implements > >>>> >>>> Reducer<Text, > >>>> >>>> > FloatWritable, Text, FloatWritable> > >>>> >>>> > { > >>>> >>>> > static enum MyCounter{ct_key1}; > >>>> >>>> > > >>>> >>>> > public void reduce(..............) throws IOException > >>>> >>>> > { > >>>> >>>> > > >>>> >>>> > reporter.incrCounter(MyCounter.ct_key1, 1); > >>>> >>>> > > >>>> >>>> > output.collect(......); > >>>> >>>> > > >>>> >>>> > } > >>>> >>>> > } > >>>> >>>> > > >>>> >>>> > -----main method---- > >>>> >>>> > { > >>>> >>>> > RunningJob running = null; > >>>> >>>> > running=JobClient.runJob(conf); > >>>> >>>> > > >>>> >>>> > Counters ct = running.getCounters(); > >>>> >>>> > /********* How do I Collect the ct_key1 value ????***********/ > >>>> >>>> > long res = ct.getCounter(MyCounter.ct_key1); > >>>> >>>> > > >>>> >>>> > } > >>>> >>>> > > >>>> >>>> > > >>>> >>>> > > >>>> >>>> > > >>>> >>>> > > >>>> >>>> > Thanks, > >>>> >>>> > > >>>> >>>> > Sharath > >>>> >>>> > > >>>> >>>> > >>>> >>> > >>>> >>> > >>>> >> > >>>> > > >>>> > > >>>> > > >>>> > -- > >>>> > M. Raşit ÖZDAŞ > >>>> > > >>>> > >>>> > >>>> > >>>> -- > >>>> M. Raşit ÖZDAŞ > >>>> > >>> > >>> > >> > > > > > > > > -- > > M. Raşit ÖZDAŞ > > >
