关于Maven构建的多模块工程在Hadoop下运行时模块无法互相调用类的问题

发布于 2021-11-27 20:26:23 字数 739 浏览 828 评论 5

现在有一个关于Maven的小问题想向大家请教一下

我现在在IntelliJ IDEA创建了一个Maven Project , 下面有两个子模块,一个是hope-basic,一个是hope-hadoop

我在hope-basic模块中写了一个HopeUtil类,在hope-hadoop的pom.xml中引用hope-basic这个模块,并在一个任务的mapper中调用到了这个HopeUtil类。

现在问题是在IDEA中我编译正常,同时mvn install也没有错误,在hadoop中执行hadoop jar hope-hadoop.jar org.someclass [参数] 时,job能正常启动,但是在执行map过程中,会抛出runtimeError异常,提示ClassNotFound。但是如果把这个类复制到hope-hadoop模块后就能够正常执行。

那么比较科学的方法是怎样的呢?我难道不能从hadoop模块中引用basic模块的自己编写的类么?

是pom.xml配置问题?还是本身就不可以呢?鞠躬……

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

清欢 2021-11-30 00:04:16

你可以试试把hope-basic部署到一个私服,然后在hope-hadoop中引入

伴我心暖 2021-11-29 21:57:40

1、第一种就是连依赖+源码一起打个Artifacts么,这个我倒是试过,的确解决了问题,但是整个jar包实在是太大了。 2、第二种是指hadoop/yarn/mapred 的命令参数么?我这边代理服务器坏掉了没法访问hadoop官网和google,是怎么提交方式呢?感激不尽

最偏执的依靠 2021-11-29 18:46:30

回复
可以搜索一下 ToolRunner 和 libjars 有很多具体说明

拍不死你 2021-11-29 10:58:11

回复
恩,多谢,已经搞定了。

梦中楼上月下 2021-11-29 10:56:52

这个跟maven 没有关系,hadoop是分布式集群计算环境,你需要将你所依赖的jar包都提交到集群上去才行。有2种方式:

1 将所有依赖jar包打成fat jar 提交。

2 用hadoot的runtools 的libjars 参数,将所依赖的jar包提交。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文