hdinsight群集上的spark netty版本不匹配

u4vypkhs  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(457)

我当前在hdinsight群集中远程运行spark作业时遇到问题:
我的项目依赖于 netty-all 下面是我在pom文件中明确指定的内容:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.51.Final</version>
</dependency>

最终构建的jar包含这个具有指定版本的包,在本地机器上运行spark作业可以很好地工作。但是,当我尝试在远程hdinsight群集中运行它时,该作业会引发以下异常:

java.lang.NoSuchMethodError: io.netty.handler.ssl.SslProvider.isAlpnSupported(Lio/netty/handler/ssl/SslProvider;)Z

我相信这是由于netty版本不匹配造成的,因为spark从远程集群中的默认系统类路径(而不是uberjar中定义的较新的netty包)获取旧的netty版本(netty-all-4.1.17)。
我尝试了不同的方法来解决这个问题,但似乎效果不佳:
使用maven shade插件重新定位类:
更多细节和它的问题在这里-缺少抽象类使用maven shade插件重新定位类
Spark配置

spark.driver.extraClassPath=<path to netty-all-4.1.50.Final.jar>

    spark.executor.extraClassPath=<path to netty-all-4.1.50.Final.jar>

想知道是否有任何其他解决方案,以解决这个问题或任何步骤遗漏在这里?

zbdgwd5y

zbdgwd5y1#

您需要确保在类路径上只有netty4.1.50.final或更高版本

相关问题