引起:java.lang.ClassNotFoundException:com.example.Example $ ReduceTask运行maprduce作业时

时间:2014-09-20 20:37:48

标签: java hadoop mapreduce

我正在尝试运行下面的mapreduce作业。但是,它给了我ClassNotFound异常,即使这个内部类存在于jar中。任何人都可以提示吗?

package com.example;
import java.io.IOException;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.conf.Configuration;


 import org.apache.hadoop.io.LongWritable;
 import org.apache.hadoop.io.Text;
public class Example {
 public static void main(String[] args) throws Exception {
      Configuration conf = new Configuration();
      Job job = new Job(conf);

      job.setMapOutputKeyClass(LongWritable.class);
      job.setMapOutputValueClass(Text.class);

      job.setInputFormatClass(TextInputFormat.class);
      job.setReducerClass(Example.ReduceTask.class);
      job.setOutputKeyClass(Text.class);
      job.setOutputValueClass(Text.class);
      job.setOutputFormatClass(TextOutputFormat.class);

      FileInputFormat.addInputPath(job, new Path(args[0]));
      FileOutputFormat.setOutputPath(job, new Path(args[1]));

      job.waitForCompletion(true);
     }

     public static class ReduceTask
       extends Reducer<LongWritable, Text, Text, Text> {
      public void reduce(LongWritable key, Iterable<Text> values, Context context)
        throws IOException, InterruptedException {
       for (Text value: values) {
        String[] cols = value.toString().split(",");

        context.write(new Text(cols[0]), value);
        break;
       }
      }
     }


    }
    java.lang.RuntimeException: java.lang.ClassNotFoundException: com.example.Example$ReduceTask
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:996)
    at org.apache.hadoop.mapreduce.JobContext.getReducerClass(JobContext.java:236)
    at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:556)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:414)
    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)

我通过命令运行它:

hadoop jar PracticeHadoop.jar com.example.Example workspace/input workspace/op

0 个答案:

没有答案
相关问题