Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created 06-15-2016 03:32 AM
Hi, I'm experimenting with using Zeppelin / Spark to perform geo-location on IP addresses using the Maxmind GeoIP library. I am encountering a NoSuchMethodError which from reading the forums appears to be a dependency issue with the method not being in certain versions of the jackson lib. How can I go about identifying and resolving this dependency issue in Zeppelin? I load geoip2 via %dep and have removed the older versions of the jackson lib from zeppelin/lib/lib to no avail. Thanks!
%dep
z.addRepo("geoip2").url("http://mvnrepository.com/artifact/com.maxmind.geoip2/geoip2/2.7.0")
z.load("com.maxmind.geoip2:geoip2:2.7.0")java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.node.ArrayNode.<init>(Lcom/fasterxml/jackson/databind/node/JsonNodeFactory;Ljava/util/List;)V
Created 06-16-2016 06:48 PM
Spark includes some Jackson libraries as it's own dependencies, including this one:
<fasterxml.jackson.version>2.6.5</fasterxml.jackson.version>
Therefore, if your additional third-party library also includes this library with a different version, then the classloader will get errors. You can use the Maven Shade plugin to "relocate" the third-party jar, as described here:
https://maven.apache.org/plugins/maven-shade-plugin/examples/class-relocation.html
Here is an example of relocating the "com.fasterxml.jackson" library:
Created 06-15-2016 05:30 AM
seems you have library mismatch for jackson, could you please verify which jars contain this class com.fasterxml.jackson.databind.node.ArrayNode,isolate those jars and maintain a single version of jars available across the classpath. if you still want to use to different jar version then please consider jar shading.
Created 06-15-2016 05:52 AM
Hi @Rajkumar Singh, I believe the jar in question is jackson-databind. For Spark / Zeppelin which classpath / directories should I be look at?
Created 06-15-2016 05:58 AM
please look into zeepline lib folder.
Created 06-15-2016 06:25 AM
Yeah have tried that but still encountering the same error
Created 06-15-2016 07:10 AM
@KCcan you lookout for these two jars, i m suspecting that zepplien spark dependency is causing this issue.
zeppelin/lib/interpreter/spark/dep/zeppelin-spark-dependencies-0.6.0.2.4.0.0-169.jar
/zeppelin/lib/interpreter/flink/jackson-databind-2.4.2.jar
Created 06-15-2016 07:30 AM
@Rajkumar Singh yeah i removed the jackson-databind jar in the flink folder, the zeppelin-spark-dependencies jar is still there. How do I determine which version / jar is being used by Zeppelin / Spark at run-time?
Created 06-15-2016 07:44 AM
this jar is used by the zeppelin server at runtime zeppelin/lib/interpreter/spark/dep/zeppelin-spark-dependencies-0.6.0.2.4.0.0-169.jar, will be good if you have your version of jar shaded.
Created 06-16-2016 01:35 AM
thanks @Rajkumar Singh for the suggestion. are you able to provide some instructions or direct me to some resources on how I should shade the jar?
Created 06-16-2016 04:34 AM
@KC could you please follow this tutorial http://www.mkyong.com/maven/create-a-fat-jar-file-maven-shade-plugin/