spark应用程序依赖冲突解决方式

当用户应用与 Spark 本身依赖同一个库时可能会发生依赖冲突,导致程序崩溃。这种情况 不是很常见,但是出现的时候也让人很头疼。通常,依赖冲突表现为 Spark 作业执行过 程中抛出 NoSuchMethodError、ClassNotFoundException,或其他与类加载相关的 JVM 异 常。对于这种问题,主要有两种解决方式:一是修改你的应用,使其使用的依赖库的版本 与 Spark 所使用的相同,二是使用通常被称为“shading”的方式打包你的应用。Maven 构 建工具通过使用shading插件(事实上,shading 的功能也是这个插件取名为 maven- shade-plugin 的原因)进行高级配置来支持这种打包方式。shading 可以让你以另一个命名 空间保留冲突的包,并自动重写应用的代码使得它们使用重命名后的版本。这种技术有些 简单粗暴,不过对于解决运行时依赖冲突的问题非常有效。

 <build>
         <plugins>

<!-- 用来创建超级JAR包的Maven shade插件 -->

<plugin>

 <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId>         <version>2.3</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin>

</plugins> </build>

猜你喜欢

转载自blog.csdn.net/sujins5288/article/details/93166994