我尝试在AWS Glue作业中使用https://github.com/snowplow/scala-maxmind-iplookups库。我使用https://github.com/sbt/sbt-assembly来创建包含所有依赖项的jar。
包括杰克逊的情况
set
错误是
set
完整日志https://gist.github.com/pawaclawczyk/81844b5063d998acd3528f136c7a01f5
如果杰克逊被排除在外
dependencyOverrides ++= Seq(
"com.fasterxml.jackson.core" % "jackson-core" % "2.9.3",
"com.fasterxml.jackson.core" % "jackson-databind" % "2.9.3",
"com.fasterxml.jackson.core" % "jackson-annotations" % "2.9.3",
)
错误是
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Incompatible Jackson version: 2.9.3
完整日志https://gist.github.com/pawaclawczyk/825d66e2148d688e274eb36c99c18a89
答案 0 :(得分:0)
AWS Glue带来了Jackson依赖关系,我不知道哪个版本。您可以检查glue-assembly.jar内容 - here's how to get it。
问题是你的程序集和glue-assembly都会在Spark执行器上的同一个类路径上结束。
在使用Google Big Query Connector(主要是jackson和guava)时,我的项目中的不兼容库遇到了同样的问题,我通过在我的程序集jar中对这些库进行着色来解决它:
lazy val root = (project in file(".")).
settings(
...,
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("com.fasterxml.**" -> "my.shaded.@0").inAll,
// other shade rules
),
libraryDependencies ++= ...
)