尝试运行作业,但我一直收到此错误。我不知道如何解决它。有什么东西我不见了?这有什么不对?
这是我的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);
}
}
答案 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/