我的主要火花项目依赖于其他的工具罐。所以组合可以是:
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>
我在两个不同的操作中测试了这个配置并且它可以工作。 我的问题是
在我的理解中,两个应用程序都将在他们的spark上下文中运行,所以它应该没问题,但任何专家建议?
答案 0 :(得分:1)
如果两个作业/动作在同一个纱线群上并行运行那么是否有可能出现类加载器问题(同一个jar的多个版本)?
否(或者至少不是预期的,如果发生的话,我认为这是一个错误)。
将一个Spark应用程序提交给YARN集群总是最终成为一组独立的驱动程序和执行程序,它们共同构成了与其他Spark应用程序不同的环境。