Argh! Sorry, accidentally sent email.
I am encountering a ClassCastException in my custom Tool class:
14/01/08 15:58:15 ERROR step.AbstractStep: Encountered an error executing
the step
java.lang.ClassCastException: org.apache.giraph.conf.GiraphConfiguration
cannot be cast to org.apache.hadoop.mapred.JobConf
at org.apache.hadoop.mapreduce.Job$1.run(Job.java:513)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1149)
at org.apache.hadoop.mapreduce.Job.connect(Job.java:511)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:499)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)
at
com.johnyost.analytics.TwitterSpringRunner.run(TwitterSpringRunner.java:72)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
Looking at the Hadoop Job source code, the ClassCastException is being
thrown here:
private void connect() throws IOException, InterruptedException {
511 ugi.doAs(new PrivilegedExceptionAction<Object>() {
512 public Object run() throws IOException {
513 jobClient = new JobClient((JobConf) getConfiguration());
514 return null;
515 }
516 });
My job runs fine with GiraphRunner, and I see that class implements Tool
and does not extend Configured like I did. So... I changed my class
definition to implements Tool instead of extends Configured and implements
Tool, implementing getConf and setConf. This did not help.
Any ideas? This Exception is a real head-scratcher for me
Thanks
--John