关于IDEA打包JAR上传到Hadoop集群运行出现ClassNotFound的问题

本文讲述了作者在复现尚硅谷大数据电信客服项目时遇到的Hadoop集群加载外部依赖问题,尝试了本地lib目录打包和修改Hadoop classpath两种方法,最终发现版本冲突是关键。通过拷贝并管理依赖版本,解决了classnotfoundexception问题。
摘要由CSDN通过智能技术生成

问题描述

复现尚硅谷大数据电信客服项目到数据分析的时候,发现无论怎么改变IDEA或者maven的打包方式、添加依赖jar,hadoop集群始终无法在运行项目的时候加载出来打包时候的其他第三方依赖,总会出现部分类的class not found exception(我尽力了也许是我不熟悉IDEA或者maven到底应该是怎么打包的)。

解决方法

按照原视频中老师按照这种方法使用IDEA打jar包步骤(见方法一)将所有依赖和项目jar包放在一个ct_analysis文件夹中其实应该是work的,但是我这边集群会报错找不到一些类,而且是解决了这个类找不到又会冒出来下一个……所以在查询了多方资料后,大概总结了两种方法。
注:尚硅谷这个课程的教学视频非常的好,建议多看几遍,尤其是像我这样的菜鸡新手。

方法一:

第一种就是在本地打包的时候创建一个lib文件夹,将项目所用到的依赖包都放进去,再把lib加到项目根目录下,
参考idea打包成可执行jar包和lib包
运行hadoop jar 命令时,依赖第三方Jar包的解决方法等。
然而对我来说还是不管用,报错依旧。

方法二:

第二种是更改Hadoop的classpath。参照Hadoop如何加载第三方包

暴力方法

我最后把照着视频中打包的文件夹中的第三方依赖都拷到了$HADOOP_HOME/share/hadoop/common/lib目录下,并且集群分发,因为懒得自己手改hadoop的classpath,结果发现可以work一部分。这时候我发现我的依赖有版本冲突的问题,删除旧的依赖拷进来新的依赖就可以慢慢的消除exception了。好像这才是问题所在……。

下一步查一下如何解决maven相同包的版本依赖问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值