MapReduce 中job.setJarByClass()方法的疑惑


在調試mr實例的時候,遇到如下的情況,如圖所示

說明:就是我的mr程序類名稱和我設置的setJarByclass()中設置的不一樣,但是程序竟然沒有報錯!!!!當時把我嚇尿了

疑惑:如果這樣設置的話,那豈不是找不到的main方法了啊?

最后查看setJarByClass()方法,驚奇的發現

在 JobConf中有個setJarByClass方法

/**
* Set the job's jar file by finding an example class location.
*
* @param cls the example class.
*/

public void setJarByClass(Class cls) {
String jar = ClassUtil.findContainingJar(cls);
if (jar != null) {
setJar(jar);
}
}

該方法的作用是 通過傳入的class 找到job的jar包,上圖我們設置的class 跟我們的job類位於同一個包中,通過public void setJarByClass(Class cls)  返回的是就是我們job包的jar,所以成功了

 

如果 我們設置的的class跟主類不在同一個工程中,程序會報錯:NotFoundClass

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM