Spark集群运行junit测试类

首先:我们的项目是多模块构建的,所以打包的时候会遇到各种模块之间依赖的问题,我们项目用到的是junit测试类,没有用main方法做测试,所以在打包运行的时候可能跟main函数运行方式有很大区别。

1.     测试类需要继承TestCase类,如需要运行ESReadTest,则需要将其继承TestCase:

                                     

2.     将需要导出的子模块所依赖的jar包导出:

(1)   方法一:通过运行mvn dependency:copy-dependencies –DoutputDirectory=lib导出:

进入datastore目录,输入命令,将子模块所需要的jar包导出到lib目录中。

执行成功后,能看到所依赖的jar包:

(2)方法二:eclipse中,选择项目的pom.xml文件,点击右键菜单中的Run As,见下图红框中,在弹出的Configuration窗口中,输入 dependency:copy-dependencies后,点击运行

然后输入


(3)   方法三:通过可执行jar包导出:

在测试类中随便写一个main函数:

运行这个main函数,之后点击子模块导出可执行的jar包

然后用rar或者zip方式解压datastore.jar就能得到依赖的jar。

3.     将依赖的jar包拷贝到集群中,其中必须包含junit-4.12.jar这个jar包:

4.     将子模块打包:

右键需要打包的子模块,比如bigdataplatform-sdks-datastore


将子模块依赖的模块代码都需打包进去,否则会报方法找不到异常。见错误后面截图。

选择路径,命名jar包名称。

5.   将子模块中需要用到的数据集和配置文件都上传到Spark集群主节点:

例如ESReadTest需要用到datastore_config.properties这个配置文件,那么将这个配置文件上传到/home/hadoop/zjq这个目录中。如果需要用到数据集,那么则将数据集也上传到/home/hadoop/zjq这个目录下。(其中home/hadoop/zjq需要换成自己的目录,上传方式用WinSCP)。

代码中指定的路径只能写相对路径,比如:

不能写成“src/main/resources/datastore_config.properties”这种形式。否则会找不到文件。数据集路径也是一样的。

6.    将jar文件放到集群上:

运行命令:

java -cp .:/home/hadoop/zjq/lib/*:./testSpark.jarjunit.textui.TestRunner -m edu.fzu.bigdataplatform.sdk.datastore.operation.ESReadTest.testProcess 

其中:

/home/hadoop/zjq/lib:表示jar包所在的路径

testSpark.jar:表示jar文件的名字

-m:表示运行方法,去掉这个参数表示运行整个类里面的所有测试方法

edu.fzu.bigdataplatform.sdk.datastore.operation.ESReadTest.testProcess:包名+类名+测试方法名

运行结果截图:

 

输出的运行结果:

Spark UI看到执行任务:



错误集合:

(1)   没有将依赖的模块打进jar包会出现找不到方法异常

(2)   netty版本冲突

以下错误都是netty版本冲突,maven库很多包会下载依赖的jar,导致下载下来的jar包很多会出现版本冲突,比如这里的异常是因为:core包会下载netty 4.0.23版本包,但是datastore模块会下载netty 4.1.11版本包,导致放到集群中出现版本冲突报错,


解决方式:将netty包版本改成一样。

刚开始:

改完:

换版本的方式也很简单,直接在pom.xml里面写版本号,然后更新下来,去本地库就能找到这些jar包



是不是so easy,但是如果连这个都下载不了这个jar包的话,可能是没有这个版本的jar包,需要换一个版本,或者看看groupId等是不是写错了

(3) 以下这个问题比较low,运行过程中没有报错,但是程序一直卡在光标那不动,google很久,居然有人说在每个spark节点启动zookeeper就可以解决,内心os:这两个有关系吗,不过还是试了一下,结果跟想的一样,没啥关系。后面看了一下日志,发现Spark除了主节点是外网,其他都是内网,但是ES都是外网的,导致其他节点与ES通信不了,后面把ES换成内网IP就可以了。


(4)报以下错误


测试类没有继承TestCase这个类

即可



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值