用GenericObjectPool来连接postgres数据库,在pom.xml中也加入了依赖
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
在本机运行成功,打jar包放到集群上运行就报错:
20/07/06 10:25:51 ERROR executor.Executor: Exception in task 0.0 in stage 2.0 (TID 4)
java.lang.NoClassDefFoundError: org/apache/commons/pool2/PooledObjectFactory
at com.emg.covers.MatchPointDAO$.roadMatch(JdbcHelper.scala:23)
解决办法:
在submit提交程序的时候再次引入org.apache.commons.commons-pool2的jar包
--jars /data/modules/testcxb/test/commons-pool2-2.4.2.jar \
#!/bin/bash
echo ------------------------ $syst_print ------------------------------ >> /data/modules/testcxb/test/6month.log
nohup /home/modules/spark-2.1.1/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--class com.emg.covers.Roadid_Covers \
--name roadid_covers \
--driver-memory 1G \
--executor-memory 2G \
--executor-cores 2 \
--num-executors 20 \
--jars /data/modules/testcxb/test/commons-pool2-2.4.2.jar \
/data/modules/testcxb/test/cover_6month.jar \
emg/ecar/202007/05/01 cxb_cover_6month