线程"主要"抛出java.lang.ClassNotFoundException

时间:2014-04-28 18:21:11

标签: exception hadoop mapreduce

尝试运行作业,但我一直收到此错误。我不知道如何解决它。有什么东西我不见了?这有什么不对?

这是我的shell

[cloudera@localhost home]$ hadoop jar cloudera/MinMaxCountDriver.jar MinMaxCount /user/cloudera/Comments.xml /user/cloudera/SuperUserXML/

这是我得到的错误      线程“main”中的异常java.lang.ClassNotFoundException:MinMaxCount     ....     at java.lang.Class.forName0(Native Method)     at java.lang.Class.forName(Class.java:247)     在org.apache.hadoop.util.RunJar.main(RunJar.java:201)

这是我的司机。

public class MinMaxCountDriver {
public static void main(String []args) throws Exception
{
    Configuration conf = new Configuration();
    String [] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();

    if(otherArgs.length !=2 )
    {
        System.err.println("You need 2 Arguement");
        System.exit(2);
    }

    ...

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

    System.exit(job.waitForCompletion(true)? 0: 1);

}

}

2 个答案:

答案 0 :(得分:1)

运行MR作业的基本命令是

hadoop jar myjar.jar classname inputfolder outputfolder

对我来说,它没有分类名称

myproject
  |
  |
   -----> mypackage
           |
           |
           ---->Driver.java
           |
           |
           ---->Mapper.java
           |
           |
           ---->Reducer.java

如果这是树,我不需要指定类名

hadoop jar driver.jar in out

但是

myproject
      |
      |
       -----> mypackage
      |        |
      |        |
      |        ---->Driver.java
      |        |
      |        |
      |        ---->Mapper.java
      |        |
      |        |
      |        ---->Reducer.java
      | 
      ----> mypackage2
               |
               |
                ---->Driver2.java
               |
               |
               ---->Mapper2.java
               |
               |
               ---->Reducer2.java

为此,我需要指定我正在尝试执行的驱动程序类的类名。

hadoop jar driver2.jar mypackage2.Driver2 in out

答案 1 :(得分:0)

  

.jar中的每个类都在顶部有[package MapRedDesign;]。

根据您的评论,确保您使用软件包完全限定您的类名,否则Java将不知道在哪里可以找到它。

hadoop jar cloudera/MinMaxCountDriver.jar MapRedDesign.MinMaxCount /user/cloudera/Comments.xml /user/cloudera/SuperUserXML/