Mapreduce-Eclipse:先将月食添加到我的程序中,然后运行它

时间:2019-03-03 10:04:54

标签: eclipse mapreduce

我正在尝试从Eclipse提交mapreduce作业,该作业已提交,但失败,并显示ClassNotFoundException。经过一番研究后,我找到了原因(请阅读以下说明),我想知道是否可以通过配置月食来解决这个问题。

为什么作业失败并出现ClassNotFoundException

在mapreduce驱动程序代码中,我们通常按类名设置Jar,即使用JobConf.setJarByClass函数。此函数接受java.lang.Class并找出包含它的jar(通过调用ClassUtil.findContainingJar)。此jar稍后以job.jar的形式上传到HDFS。

但是这里的问题是Eclipse运行Java程序的方式,它编译类并将.class文件放置在bin目录中,将bin目录添加到{{1 }},并运行CLASSPATH类。因此,ClassUtil.findContainingJar找不到包含自变量类的任何文件(它仅搜索Main文件)并返回.jar。因此,没有任何上载到HDFS的操作,并且Mapreduce作业因null异常而失败。

好吧,我可以编写一个简单的方法,该方法可以存档所需的类,然后将此jar名称提供给JobConf,但是如果有一种简便的方法来修改Eclipse的行为,那将非常有帮助

PS: 该项目是一个简单的Java项目,我正在使用默认的“运行配置”运行它

0 个答案:

没有答案