WORDCOUNT程序上的hadoop错误

WORDCOUNT程序上的hadoop错误,hadoop,mapreduce,Hadoop,Mapreduce,这是我的java hadoop wordcount示例,它给出了以下错误: 线程“main”java.lang.NoClassDefFoundError中出现异常: org/apache/avro/io/DatumReader,位于java.lang.Class.forName0(本机) 方法)在java.lang.Class.forName(Class.java:348)中 org.apache.hadoop.conf.Configuration.getClassByName(Configur

这是我的java hadoop wordcount示例,它给出了以下错误:

线程“main”java.lang.NoClassDefFoundError中出现异常: org/apache/avro/io/DatumReader,位于java.lang.Class.forName0(本机) 方法)在java.lang.Class.forName(Class.java:348)中 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1074) 在 org.apache.hadoop.io.serializer.SerializationFactory.add(SerializationFactory.java:69) 在 org.apache.hadoop.io.serializer.SerializationFactory.(SerializationFactory.java:62) 在 org.apache.hadoop.mapreduce.split.JobSplitWriter.writeNewSplits(JobSplitWriter.java:117) 在 org.apache.hadoop.mapreduce.split.JobSplitWriter.createSplitFiles(JobSplitWriter.java:74) 在 org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:1030) 在 org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:1041) 位于org.apache.hadoop.mapred.JobClient.access$700(JobClient.java:179) 位于org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:959) org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:912)位于 java.security.AccessController.doPrivileged(本机方法)位于 javax.security.auth.Subject.doAs(Subject.java:422)位于 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:742) 在 org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:912) 位于org.apache.hadoop.mapreduce.Job.submit(Job.java:500) org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)位于 main(WordCount.java:66) 原因:java.lang.ClassNotFoundException:org.apache.avro.io.DatumReader位于 java.net.URLClassLoader.findClass(URLClassLoader.java:381)位于 loadClass(ClassLoader.java:424)位于 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)位于 loadClass(ClassLoader.java:357)


提前感谢。

如果此程序中的其余代码已更正; 我建议你检查一下这条路 OutputPath文件夹不能存在
我试过你的代码更改文件路径,代码可以正常运行

 public static void main(String[] args) throws Exception 
 {
    Configuration conf = new Configuration();
    conf.addResource(new Path("/usr/local/hadoop/etc/hadoop/core-site.xml"));
    conf.addResource(new Path("/usr/local/hadoop/etc/hadoop/hdfs-site.xml"));
    Job job = new Job();
    //job.setJarByClass(WordCount.class);
    job.setJobName("WordCounter");

    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    FileInputFormat.addInputPath(job, new Path("/home/pramukh/eclipse/eclipseproj/hadoop/input/input.txt"));
    FileOutputFormat.setOutputPath(job, new Path("/home/pramukh/eclipse/eclipseproj/hadoop/output.txt"));
//System.exit(0);
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }

如果此程序中的其余代码已更正; 我建议你检查一下这条路 OutputPath文件夹不能存在
我试过你的代码更改文件路径,代码可以正常运行

 public static void main(String[] args) throws Exception 
 {
    Configuration conf = new Configuration();
    conf.addResource(new Path("/usr/local/hadoop/etc/hadoop/core-site.xml"));
    conf.addResource(new Path("/usr/local/hadoop/etc/hadoop/hdfs-site.xml"));
    Job job = new Job();
    //job.setJarByClass(WordCount.class);
    job.setJobName("WordCounter");

    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    FileInputFormat.addInputPath(job, new Path("/home/pramukh/eclipse/eclipseproj/hadoop/input/input.txt"));
    FileOutputFormat.setOutputPath(job, new Path("/home/pramukh/eclipse/eclipseproj/hadoop/output.txt"));
//System.exit(0);
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }

首先,你不需要喊(大写):)这里有一个可能的解决方案:首先,你不需要喊(大写):)这里有一个可能的解决方案: