使用 oozie spark 动作加载依赖 jar(不同 actions/jobs 的相同 jar 的不同版本)

Loading dependency jars (different versions of same jar for different actions/jobs) with oozie spark action

我的主要 spark 项目依赖于其他实用程序 jars.So 一组组合可能是这样的:

 1. main_spark-1.0.jar will work with utils_spark-1.0.jar (some jobs use this set)
 2. main_spark-2.0.jar will work with utils_spark-2.0.jar  (and some of the jobs use this set)

对我来说处理这种情况的方法是使用 spark-opt as

传递 jar
oozie spark action job1
<jar>main_spark-1.0.jar</jar>
<spark-opt>--jars utils_spark-1.0.jar</spark-opt>

oozie spark action job2
<jar>main_spark-2.0.jar</jar>
<spark-opt>--jars utils_spark-2.0.jar</spark-opt>

我在两个不同的操作中测试了这个配置并且它有效。 我的问题是

  1. 与在应用程序库路径 (oozie) 中加载 jar 有何不同?
  2. 如果 jobs/action 运行 在同一个 yarn-cluster 上并行,那么是否有可能 class 加载器问题(同一个 jar 的多个版本)?

据我了解,这两个应用程序都将 运行ning 在其 spark 上下文中,因此应该没问题,但有专家建议吗?

If both jobs/action run in parallel on same yarn-cluster then Is there any possibility of class loader issue (multiple versions of same jar)?

没有(或者至少不是预期的,如果发生我会认为这是一个错误)。

将 Spark 应用程序提交到 YARN 集群总是以一组独立的驱动程序和执行程序结束,它们共同构成一个与其他 Spark 应用程序不同的环境。