Hi all,

I'm trying to run MaxMind GeoIP2 in a Spark task, but get a runtime error
at init due to a NoSuchMethodError for ArrayNode from
com.fasterxml.jackson.core:jackson-databind.
This succeeds locally in unit tests, but fails in Spark tasks.

I've excluded jackson-databind from all other dependencies, including
Spark, since MaxMind is using the latest version of jackson-databind
(2.7.0).

`mvn dependency:tree` shows no conflicts for jackson-databind. There are
numerous conflicts with other jackson utilities from org.codehaus, but this
shouldn't be a problem since it is in a different namespace, right?

I think this may be a problem with the shaded jar produced by
maven-shade-plugin 2.4. Here is the config from pom.xml:
pastebin.com/QzrhM5Ee

`jar tvf shaded.jar` yields an entry for the missing class,
com/fasterxml/jackson/databind/node/ArrayNode.class.
META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml has the
correct version, 2.7.0. The shaded jar expanded jackson-databind into its
constituent *.class files instead of providing the jar itself; is this
normal?

My other thought is there is some issue with the classpath. Is it
sufficient that the shaded jar contains the jackson-databind *.class files?
How else can I investigate this? I know that GeoIP databse init succeeds
locally with the jackson-databind jar in ~/.m2/

I've seen numerous issues with jackson-databind due to Spark using an old
version and not shading this particular dependency, but this seems to have
been resolved. I'm currently using version 1.3.1 and get the same result
bumping the version to 1.6.0

More detail here:
https://stackoverflow.com/questions/34958520/nosuchmethodexception-in-maxmind-geoip-dependency-jackson-databind-built-with-mv


Thanks,

Ben

Reply via email to