【发布时间】:2020-07-29 20:09:29
【问题描述】:
我目前在 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 从远程集群中的默认系统类路径中获取旧的 netty 版本(netty-all-4.1.17),而不是在 uber 中定义的较新的 netty 包罐子。
我尝试了不同的方法来解决这个问题,但它们似乎效果不佳:
-
使用 Maven Shade 插件重定位类:
更多细节及其问题在这里 - Missing Abstract Class using Maven Shade Plugin for Relocating Classes
-
火花配置
spark.driver.extraClassPath=<path to netty-all-4.1.50.Final.jar>
spark.executor.extraClassPath=<path to netty-all-4.1.50.Final.jar>
想知道是否有其他解决方案可以解决此问题或此处缺少任何步骤?
【问题讨论】:
标签: apache-spark netty azure-hdinsight