如何为spark应用程序构建着色jar以实现分布式和本地执行?

fivyi3re  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(184)

我正在构建一个spark应用程序,我想生成两个单独的shaded.jar文件,分别对应于以下每个上下文:
对于master=local模式,我需要一个可以用 java -jar shaded-for-local-mode.jar . 这应该包括所有依赖项,包括正在使用的spark和hadoop依赖项。
对于分布式模式,我需要一个排除spark和hadoop库的.jar文件( org.apache.hadoop:* )这样它们就不会与 spark-submit (spark docs),但我还想包括 org.apache.hadoop 组( org.apache.hadoop:hadoop-aws )因为它不是由运行时环境提供的。
这个答案解释了如何使用两个单独的 <execution> 块,但是我很难让排除项按我想要的方式工作。
这是相关的阴影 <execution> :

  1. <execution>
  2. <id>shade-spark-submit</id>
  3. <phase>package</phase>
  4. <goals>
  5. <goal>shade</goal>
  6. </goals>
  7. <configuration>
  8. <shadedClassifierName>shaded-spark-submit</shadedClassifierName>
  9. <artifactSet>
  10. <excludes>
  11. <exclude>org.apache.spark:*</exclude>
  12. <!-- We want hadoop-aws, an explicit dependency of this project, but not any of the other hadoop packages. -->
  13. <exclude>org.apache.hadoop:hadoop-auth</exclude>
  14. <exclude>org.apache.hadoop:hadoop-common</exclude>
  15. <exclude>org.apache.hadoop:hadoop-annotations</exclude>
  16. </excludes>
  17. </artifactSet>
  18. <finalName>${project.artifactId}-${project.version}-shade-spark-submit</finalName>
  19. </configuration>
  20. </execution>

我担心的是 <exclude> 语句显式地排除我所知道的特定包,这与我的目标略有不同:我希望始终排除 org.apache.hadoop:* (即使是我不知道的)但是包括 org.apache.hadoop:hadoop-aws . shade的文档没有完全描述如何 <include> 以及 <exclude> 标记已处理。
谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题