jar file 在eclipse運行成功 換命令行運行卻出錯

程序在eclipse運行正確,但是export 成jar,在命令行裏運行提示錯誤,如下:
14/05/22 19:14:23 INFO mapreduce.Job: Task Id : attempt_1400777095877_0002_m_000001_2, Status : FAILED
Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class pgm.main.GibbsSamplingMapper not found
	at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1720)
	at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)
	at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:721)
	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:339)
	at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:415)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
	at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157)
Caused by: java.lang.ClassNotFoundException: Class pgm.main.GibbsSamplingMapper not found
	at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1626)
	at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1718)
	... 8 more

14/05/22 19:14:29 INFO mapreduce.Job:  map 100% reduce 100%
14/05/22 19:14:29 INFO mapreduce.Job: Job job_1400777095877_0002 failed with state FAILED due to: Task failed task_1400777095877_0002_m_000000
Job failed as tasks failed. failedMaps:1 failedReduces:0

確定是有mapper類的

原因:應該是沒指明上何處尋找class類,所以程序會找不到類

解決:

給job添加 job.setJarByClass(GibbsSamplingDriver.class); 運行成功

setJarByClass

public void setJarByClass(Class<?> cls)
Set the Jar by finding where a given class came from.


Parameters:
cls - the example class

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章