Spark-submit作业在redis.clients.jedis.JedisPoolConfig.setFairness(Z)V中抛出NoSuchMethodError

时间:2017-11-28 12:13:40

标签: java apache-spark redis spark-streaming

我的火花流工作(火花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的不同版本。

我试过了:

  1. 使用--jar选项添加我的commons-pool2

  2. 使用spark.executor.extraClassPath=true

  3. 两次试验都失败了。

    有人可以帮忙吗?

    由于

0 个答案:

没有答案