2015-08-21 3 views
3

У меня проблемы, когда я пытаюсь использовать com.typesafe.play play-json 2.4.0 на искру. Код ошибки делает исключение на искровом сервере, но он отлично работает на моем компьютере.java.lang.NoSuchMethodError, когда я пытаюсь разобрать Json on spark

val json = Json.parse(json_string) 

Exeption:

java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonToken.id()I 
    at play.api.libs.json.jackson.JsValueDeserializer.deserialize(JacksonJson.scala:122) 
    at play.api.libs.json.jackson.JsValueDeserializer.deserialize(JacksonJson.scala:108) 
    at play.api.libs.json.jackson.JsValueDeserializer.deserialize(JacksonJson.scala:103) 
    at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:2860) 
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1569) 
    at play.api.libs.json.jackson.JacksonJson$.parseJsValue(JacksonJson.scala:226) 
    at play.api.libs.json.Json$.parse(Json.scala:21) 
    at org.soprism.kafka.connector.TwitterToCassandraPostsParser$.ParseJson(TwitterToCassandraPostsParser.scala:74) 
    at org.soprism.kafka.connector.TwitterToCassandraPostsParser$$anonfun$1$$anonfun$apply$1.apply(TwitterToCassandraPostsParser.scala:65) 
    at org.soprism.kafka.connector.TwitterToCassandraPostsParser$$anonfun$1$$anonfun$apply$1.apply(TwitterToCassandraPostsParser.scala:65) 
    at scala.collection.Iterator$class.foreach(Iterator.scala:727) 
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) 
    at org.apache.spark.rdd.RDD$$anonfun$foreach$1.apply(RDD.scala:798) 
    at org.apache.spark.rdd.RDD$$anonfun$foreach$1.apply(RDD.scala:798) 
    at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1503) 
    at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1503) 
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61) 
    at org.apache.spark.scheduler.Task.run(Task.scala:64) 
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

Я использую команду искровой представить Казнить

Это, как представляется, incompatibily между двумя версиями библиотеки Джексона. Как я могу это исправить?

Спасибо

+0

У вас есть _jackson-core_ настроен как зависимость? –

+0

Да, у меня есть этот: "com.fasterxml.jackson.core"% "jackson-core"% "2.5.4" – Flake

ответ

1

Спарка узлов не будет проверять вашу зависимость. Вам нужно создать uber-jar, который включает в себя все ваши зависимости и передать его Spark, чтобы быть распределенным на другой узел.

+1

Я поставил Джексона на банку, но он не работает на искру. Искра всегда берет старую версию джексона. Наверное, эта старая версия находится на хаопе. – Flake

0

Oozie имеет много устаревшего LIBS Джексона в общей Lib fodler:

[[email protected] oozie]$ sudo -u hdfs hadoop fs -ls -R /user/oozie/share | grep -i jackson-core 
-rwxrwxrwx 1 oozie supergroup  191738 2015-11-18 03:00 /user/oozie/share/lib/hive/jackson-core-2.2.2.jar 
-rw-r--r-- 1 oozie supergroup  191738 2015-11-18 03:02 /user/oozie/share/lib/lib_20151118030154/hcatalog/jackson-core-2.2.2.jar 
-rw-r--r-- 1 oozie supergroup  227500 2015-11-18 03:02 /user/oozie/share/lib/lib_20151118030154/hcatalog/jackson-core-asl-1.8.8.jar 
-rw-r--r-- 1 oozie supergroup  191738 2015-11-18 03:02 /user/oozie/share/lib/lib_20151118030154/hive/jackson-core-2.2.2.jar 
-rw-r--r-- 1 oozie supergroup  227500 2015-11-18 03:02 /user/oozie/share/lib/lib_20151118030154/hive/jackson-core-asl-1.8.8.jar 
-rw-r--r-- 1 oozie supergroup  227500 2015-11-18 03:02 /user/oozie/share/lib/lib_20151118030154/hive2/jackson-core-asl-1.8.8.jar 
-rw-r--r-- 1 oozie supergroup  227500 2015-11-18 03:01 /user/oozie/share/lib/lib_20151118030154/pig/jackson-core-asl-1.8.8.jar 
-rw-r--r-- 1 oozie supergroup  192699 2015-11-18 03:02 /user/oozie/share/lib/lib_20151118030154/spark/jackson-core-2.2.3.jar 
-rw-r--r-- 1 oozie supergroup  227500 2015-11-18 03:02 /user/oozie/share/lib/lib_20151118030154/spark/jackson-core-asl-1.8.8.jar 
-rw-r--r-- 1 oozie supergroup  197986 2015-11-18 03:02 /user/oozie/share/lib/lib_20151118030154/sqoop/jackson-core-2.3.1.jar 
-rwxrwxrwx 1 oozie supergroup  227500 2015-11-18 03:00 /user/oozie/share/lib/pig/jackson-core-asl-1.8.8.jar 
-rwxrwxrwx 1 oozie supergroup  195678 2015-11-18 03:00 /user/oozie/share/lib/sqoop/jackson-core-2.3.1.jar 
-rwxrwxrwx 1 oozie supergroup  224637 2015-11-18 03:00 /user/oozie/share/lib/sqoop/jackson-core-asl-1.8.8.jar 
[[email protected] oozie]$ 

Используйте следующий реквизит в разделе в workflow.xml:

<property> 
    <name>oozie.launcher.mapreduce.task.classpath.user.precedence</name> 
    <value>true</value> 
</property> 

Вот ошибка в Oozie. Проверьте следующие ссылки на деталь: https://issues.apache.org/jira/browse/OOZIE-2066
http://gbif.blogspot.com.by/2014/11/upgrading-our-cluster-from-cdh4-to-cdh5.html

Не забудьте добавить в Джексоне убера банки для Oozie Lib.

Смежные вопросы