Как использовать зависимость Джексона с AWS Glue - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь использовать библиотеку https://github.com/snowplow/scala-maxmind-iplookups в работе AWS Glue.Я использую https://github.com/sbt/sbt-assembly для создания jar со всеми зависимостями.

В случае, если включен Джексон

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

fulllog https://gist.github.com/pawaclawczyk/81844b5063d998acd3528f136c7a01f5

В случае, если исключен Джексон

excludeDependencies ++= Seq(
  ExclusionRule("com.fasterxml.jackson.core")
)

, ошибка составляет

ERROR ApplicationMaster: User class threw exception: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.node.ArrayNode.<init>(Lcom/fasterxml/jackson/databind/node/JsonNodeFactory;Ljava/util/List;)V
java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.node.ArrayNode.<init>(Lcom/fasterxml/jackson/databind/node/JsonNodeFactory;Ljava/util/List;)V

full log https://gist.github.com/pawaclawczyk/825d66e2148d688e274eb36c99c18a89

1 Ответ

0 голосов
/ 01 июня 2018

AWS Glue использует зависимости Джексона, хотя я не уверен, какая версия.Вы можете проверить содержимое glue-assembly.jar - вот как его получить .

Проблема в том, что ваша сборка и сборка клея оказываются в одном и том же пути к классам в Spark executor.

У меня была такая же проблема с несовместимыми библиотеками в моем проекте при использовании Google Big Query Connector (в основном, Джексона и Гуавы), и я решил ее, закрасив эти библиотеки в своем сборочном фляге следующим образом:

lazy val root = (project in file(".")).
  settings(
    ...,
    assemblyShadeRules in assembly := Seq(
      ShadeRule.rename("com.fasterxml.**" -> "my.shaded.@0").inAll,
      // other shade rules
    ),
    libraryDependencies ++= ...
  )
...