试图运行作业,但我一直收到这个错误。我不知道该怎么解决。是不是我遗漏了什么?这里怎么了?
这是在我的外壳
[cloudera@localhost home]$ hadoop jar cloudera/MinMaxCountDriver.jar MinMaxCount /user/cloudera/Comments.xml /user/cloudera/SuperUserXML/
这就是我遇到的错误线程"main"java.lang.ClassNotFoundException中的异常:MinMaxCount。。。。位于java.lang.Class.forName0(本机方法)位于java.lang.Class.forName(Class.java:247)网址:org.apache.hadop.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);
}
}
运行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
.jar中的每个类的顶部都有[package MapRedDesign;]。
根据你的评论,确保你的类名完全符合包的条件,否则Java将不知道在哪里可以找到它
hadoop jar cloudera/MinMaxCountDriver.jar MapRedDesign.MinMaxCount /user/cloudera/Comments.xml /user/cloudera/SuperUserXML/