Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No such method exception Hadoop <init>

When I am running a Hadoop .jar file from the command prompt, it throws an exception saying no such method StockKey method.

StockKey is my custom class defined for my own type of key.

Here is the exception:

12/07/12 00:18:47 INFO mapred.JobClient: Task Id :    attempt_201207082224_0007_m_000000_1, Status : FAILED  java.lang.RuntimeException: java.lang.NoSuchMethodException: SecondarySort$StockKey.       <init>()     at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:115)     at org.apache.hadoop.io.WritableComparator.newKey(WritableComparator.java:109)     at org.apache.hadoop.io.WritableComparator.<init>(WritableComparator.java:95)     at org.apache.hadoop.io.WritableComparator.get(WritableComparator.java:51)     at org.apache.hadoop.mapred.JobConf.getOutputKeyComparator(JobConf.java:795)     at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:817)     at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:383)     at org.apache.hadoop.mapred.MapTask.run(MapTask.java:325)     at org.apache.hadoop.mapred.Child$4.run(Child.java:270)     at java.security.AccessController.doPrivileged(Native Method)     at javax.security.auth.Subject.doAs(Subject.java:396)     at         org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127)     at org.apache.hadoop.mapred.Child.main(Child.java:264) 
like image 417
London guy Avatar asked Jul 12 '12 07:07

London guy


1 Answers

There's another thing to check when getting errors like this for classes which are writables, mappers, reducers, etc.

If the class is an inner class, make sure it's declared static (i.e. doesn't need an instance of the enclosing class). Otherwise, Hadoop cannot instantiate your inner class and will give this same error - that a zero-arg constructor is needed.

like image 123
Chris Avatar answered Sep 29 '22 11:09

Chris