Apache spark Oozie解析Jar版本

Apache spark Oozie解析Jar版本,apache-spark,hadoop,yarn,oozie,amazon-emr,Apache Spark,Hadoop,Yarn,Oozie,Amazon Emr,我有一个oozie的工作和纱线调度器一起运行 oozie作业中的两个动作是spark作业,后面是java作业 我的spark assmbly jar中有jackson 2.6版,java assembly jar中有jackson 2.9版。现在我的星火例外地熄灭了 > java.lang.Exception: Incompatible Jackson version: 2.9.3 > at com.sps.analytics.batch.bi.BatchApp.

我有一个oozie的工作和纱线调度器一起运行

oozie作业中的两个动作是spark作业,后面是java作业

我的spark assmbly jar中有jackson 2.6版,java assembly jar中有jackson 2.9版。现在我的星火例外地熄灭了

>     java.lang.Exception: Incompatible Jackson version: 2.9.3
>       at com.sps.analytics.batch.bi.BatchApp.executeQueries(BatchApp.scala:73)
>       at com.sps.analytics.batch.bi.BatchApp$.main(BatchApp.scala:32)
如何强制我的spark应用程序jar使用2.6版本

// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
dependencyOverrides += "com.fasterxml.jackson.core" % "jackson-databind" % "2.6.5" force()

// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations
dependencyOverrides += "com.fasterxml.jackson.core" % "jackson-annotations" % "2.6.5" force()

// https://mvnrepository.com/artifact/com.fasterxml.jackson.module/jackson-module-scala
dependencyOverrides += "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.6.5" force()

// https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml
libraryDependencies += "com.fasterxml.jackson.dataformat" % "jackson-dataformat-yaml" % "2.6.5" force()

这就是我在spark build中所做的。sbt

将Java操作作为子工作流有助于解决问题

您的Oozie spark作业和Java作业应该是独立的。可能是Jackson library 2.9由纱线加载(检查纱线日志)导致此冲突。如果是这种情况,请尝试使用参数
oozie.launcher.mapreduce.user.classpath.first
()似乎不起作用:(Oozie job可以作为单独的作业使用,但当我创建一个包含两个任务的作业时,它似乎不起作用。我的spark应用程序抱怨它有更高版本的jackson,这在另一个jar中使用。我的两个jar之间都是程序集jar。如何从工作流中的操作中排除lib中的jar