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

时间:2017-10-22 00:42:26

标签: apache-spark oozie oozie-coordinator

我的主要火花项目依赖于其他的工具罐。所以组合可以是:

 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的罐子传递给

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. 如何在app lib路径(oozie)中加载jar?
  2. 如果两个作业/动作在同一个纱线群上并行运行那么是否有可能出现类加载器问题(同一个jar的多个版本)?
  3. 在我的理解中,两个应用程序都将在他们的spark上下文中运行,所以它应该没问题,但任何专家建议?

1 个答案:

答案 0 :(得分:1)

  

如果两个作业/动作在同一个纱线群上并行运行那么是否有可能出现类加载器问题(同一个jar的多个版本)?

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

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