【SpringBoot 远程提交MapReduce】 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"));

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

后记

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值