2015-09-01 8 views
10

Używam iskierki napisanej w Scali 2.10.4 i działającej na klastrze Spark 1.4.0 (opartym na HDFS i zarządzanym przez YARN) i używającym Jacksona moduły w wersji 2.6.1 na repozytorium MavenBłąd w uruchomieniu zadania w Spark 1.4.0 z modułem Jacksona z ScalaObjectMapper

Podczas lokalnego uruchamiania kodu z mojego IDE (IntelliJ IDEA v14) wszystko działa w klastrze w pamięci, ale podczas uruchamiania zadania w moim zdalnym klastrze (klastrze EMR na AWS VPC) Dostaję następujący wyjątek:

java.lang.AbstractMethodError: com.company.scala.framework.utils.JsonParser$$anon$1.com$fasterxml$jackson$module$scala$experimental$ScalaObjectMapper$_setter_$com$fasterxml$jackson$module$scala$experimental$ScalaObjectMapper$$typeCache_$eq(Lorg/spark-project/guava/cache/LoadingCache;)V 
    at com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper$class.$init$(ScalaObjectMapper.scala:50) 
    at com.company.scala.framework.utils.JsonParser$$anon$1.<init>(JsonParser.scala:14) 
    at com.company.scala.framework.utils.JsonParser$.<init>(JsonParser.scala:14) 
    at com.company.scala.framework.utils.JsonParser$.<clinit>(JsonParser.scala) 
    at com.company.migration.Migration$.printAllKeys(Migration.scala:21) 
    at com.company.migration.Main$$anonfun$main$1.apply(Main.scala:22) 
    at com.company.migration.Main$$anonfun$main$1.apply(Main.scala:22) 
    at scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:371) 
    at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327) 
    at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:199) 
    at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56) 
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:70) 
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) 
    at org.apache.spark.scheduler.Task.run(Task.scala:70) 
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213) 
    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) 

Próbowałem spojrzeć przez Internet na wyjątek i bez powodzenia. Próbowałem również znaleźć podobne pytanie i znalazłem tylko jeden wątek bez akceptowalnej odpowiedzi i żadna z odpowiedzi mi tam nie pomogła.

Mam nadzieję, że znajdę pomoc tutaj,

Dzięki.

+0

Wpadłem na ten sam problem. Jak to rozwiązałeś? – Aliza

+0

Niestety, nie zrobiłem tego. Przestałem używać ScalaObjectMapper i zacząłem pracować ze zwykłym ObjectMapperem. Jak dotąd osiąga moje cele. –

+0

Na czym polega rozwiązanie? Dzięki. Też mam ten problem. – giaosudau

Odpowiedz

12

Odpowiadam na pytanie o kolejne opinie innych użytkowników.

Przestałem używać ScalaObjectMapper i zacząłem pracować ze standardowym ObjectMapper.

val jacksonMapper = new ObjectMapper() 
jacksonMapper.registerModule(DefaultScalaModule) 

I na razie działa dobrze. Komentarz Mocowanie piggybox by być pomocne komentarz:

Jedyna różnica w kodzie jest użycie classOf [...], aby określić typ dla readValue jako 2nd parametru.

Powiązane problemy