【SpringBoot 远程提交MapRed】 Error: java.lang.ClassNotFoundException: xxxxx包.xxxxx类

【SpringBoot】Error: java.lang.ClassNotFoundException: org.wltea.analyzer.core.IKSegmenter

报错明细

IDEA SpringBoot集成hadoop运行环境,本地启动项目,GET请求接口触发远程提交MapReduce任务至生产集群报错:

Error: java.lang.ClassNotFoundException: org.wltea.analyzer.core.IKSegmenter
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at com.jackroy.www.ServiceImpl.WordCountMap.map(WordCountMap.java:27)
	at com.jackroy.www.ServiceImpl.WordCountMap.map(WordCountMap.java:15)
	at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146)
	at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:799)
	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:347)
	at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1729)
	at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168)

以下方法可解决类似错误:“Error: java.lang.ClassNotFoundException: xxxxx包.xxxxx类”

问题分析

报错信息说的很清楚,找不到IKSegmenter类,也就是我们的MapReduceApplication提交至集群后,找不到相关的依赖包,解决的思路很简单,只需要将依赖提前放入Hdfs某路径下,然后通过代码行指定依赖包路径:

//  ikanalyzer-2012_u6.jar包存放于Hdfs的/0000/lib/目录下,其他缺包类似的处理办法
job.addFileToClassPath(new Path("hdfs://XXX.XXX.XX.XXX:XXXX/0000/lib/ikanalyzer-2012_u6.jar"));

接着启动项目,重新请求提交:
在这里插入图片描述
问题解决。

后记

大家有什么问题可下方留言交流。

发布了45 篇原创文章 · 获赞 66 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/Jack_Roy/article/details/104351778