火花网络版问题

时间:2018-01-07 20:00:25

标签: apache-spark netty amazon-emr

我在spark工作中使用redis客户端并获得异常

java.lang.NoSuchMethodError:io.netty.bootstrap.Bootstrap.config()Lio / netty / bootstrap / BootstrapConfig;     at org.redisson.client.RedisClient $ 1 $ 1.operationComplete(RedisClient.java:234)

由于网络版本不匹配

Spark使用netty版本netty-buffer = netty-buffer-4.0.23但redis需要4.1,是否可以在spark-submit命令中覆盖驱动程序和执行程序的netty jar。

1 个答案:

答案 0 :(得分:0)

这取决于您组装项目的方式。

基本上我们使用maven-shade-pluginmaven-assembly-plugin创建一个包含所有依赖项的胖jar。因此,要避免此问题,您可以在shade插件配置中指定重定位。它看起来像这样:

<relocations>
     <relocation>
          <pattern>io.netty</pattern>
          <shadedPattern>your.prefix.io.netty</shadedPattern>
    </relocation>
 </relocations>