我的火花流工作(火花1.6)正试图在Redis集群中存储数据,当我在本地运行它工作正常时,当它在集群上部署时,我得到了下面的堆栈跟踪:
Caused by: java.lang.NoSuchMethodError: redis.clients.jedis.JedisPoolConfig.setFairness(Z)V
at com.xyz.utils.redis.RedisClient.<init>(RedisClient.java:87)
at com.xzy.redis.Cache.<init>(Cache.java:76)
at com.xyz.spark.broadcastvariables.RedisCacheWrapper$RedisCacheHolder.getDevelopmentInstance(RedisCacheWrapper.java:29)
at com.zyx.spark.broadcastvariables.RedisCacheWrapper$RedisCacheHolder.<clinit>(RedisCacheWrapper.java:18)
at com.zyx.spark.broadcastvariables.RedisCacheWrapper.getCache(RedisCacheWrapper.java:74)
at com.zyx.spark.sparkjob.ProcessArticles.lambda$null$0(ProcessArticles.java:380)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
我正在使用redis.clients:jedis 2.9.0
,这个jar依赖于包含setFairness()方法的org.apache.commons:commons-pool2 2.4.2
。
我知道这是我的超级jar依赖关系和spark依赖关系之间的依赖冲突问题,因为我发现spark classpath取决于commons-pool
的不同版本。
我试过了:
使用--jar选项添加我的commons-pool2
使用spark.executor.extraClassPath=true
两次试验都失败了。
有人可以帮忙吗?
由于