2016-01-28 2 views
5

Ich bekomme die Ausnahme unten auf eine lange laufende Spark-Streaming-Anwendung. Die Ausnahme könnte nach ein paar Minuten auftreten, aber möglicherweise auch nicht für Tage. Dies ist mit ziemlich konsistenten Eingabedaten."java.io.IOException: Klasse nicht gefunden" auf lange Sicht Streaming-Anwendung

Ich habe this Jira ticket gesehen, aber ich denke nicht, dass es das gleiche Problem ist. Das ist java.lang.IllegalArgumentException und das ist java.io.IOException: Class not found.

Meine Anwendung streamt Daten und schreibt mit Spark SQL nach Parquet.

Ich benutze Spark 1.5.2. Irgendwelche Ideen?

28-01-2016 09:36:00 ERROR JobScheduler:96 - Error generating jobs for time 1453973760000 ms 
java.io.IOException: Class not found 
     at com.esotericsoftware.reflectasm.shaded.org.objectweb.asm.ClassReader.a(Unknown Source) 
     at com.esotericsoftware.reflectasm.shaded.org.objectweb.asm.ClassReader.<init>(Unknown Source) 
     at org.apache.spark.util.ClosureCleaner$.getClassReader(ClosureCleaner.scala:40) 
     at org.apache.spark.util.ClosureCleaner$.getInnerClosureClasses(ClosureCleaner.scala:81) 
     at org.apache.spark.util.ClosureCleaner$.org$apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:187) 
     at org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:122) 
     at org.apache.spark.SparkContext.clean(SparkContext.scala:2032) 
     at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:318) 
     at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:317) 
     at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:147) 
     at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:108) 
     at org.apache.spark.rdd.RDD.withScope(RDD.scala:310) 
     at org.apache.spark.rdd.RDD.map(RDD.scala:317) 
     at org.apache.spark.streaming.dstream.MappedDStream$$anonfun$compute$1.apply(MappedDStream.scala:35) 
     at org.apache.spark.streaming.dstream.MappedDStream$$anonfun$compute$1.apply(MappedDStream.scala:35) 
     at scala.Option.map(Option.scala:145) 
     at org.apache.spark.streaming.dstream.MappedDStream.compute(MappedDStream.scala:35) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1$$anonfun$apply$7.apply(DStream.scala:350) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1$$anonfun$apply$7.apply(DStream.scala:350) 
     at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1.apply(DStream.scala:349) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1.apply(DStream.scala:349) 
     at org.apache.spark.streaming.dstream.DStream.createRDDWithLocalProperties(DStream.scala:399) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1.apply(DStream.scala:344) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1.apply(DStream.scala:342) 
     at scala.Option.orElse(Option.scala:257) 
     at org.apache.spark.streaming.dstream.DStream.getOrCompute(DStream.scala:339) 
     at org.apache.spark.streaming.dstream.FilteredDStream.compute(FilteredDStream.scala:35) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1$$anonfun$apply$7.apply(DStream.scala:350) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1$$anonfun$apply$7.apply(DStream.scala:350) 
     at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1.apply(DStream.scala:349) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1.apply(DStream.scala:349) 
     at org.apache.spark.streaming.dstream.DStream.createRDDWithLocalProperties(DStream.scala:399) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1.apply(DStream.scala:344) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1.apply(DStream.scala:342) 
     at scala.Option.orElse(Option.scala:257) 
     at org.apache.spark.streaming.dstream.DStream.getOrCompute(DStream.scala:339) 
     at org.apache.spark.streaming.dstream.MappedDStream.compute(MappedDStream.scala:35) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1$$anonfun$apply$7.apply(DStream.scala:350) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1$$anonfun$apply$7.apply(DStream.scala:350) 
     at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1.apply(DStream.scala:349) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1.apply(DStream.scala:349) 
     at org.apache.spark.streaming.dstream.DStream.createRDDWithLocalProperties(DStream.scala:399) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1.apply(DStream.scala:344) 
     at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1.apply(DStream.scala:342) 
     at scala.Option.orElse(Option.scala:257) 
     at org.apache.spark.streaming.dstream.DStream.getOrCompute(DStream.scala:339) 
     at org.apache.spark.streaming.dstream.ForEachDStream.generateJob(ForEachDStream.scala:38) 
     at org.apache.spark.streaming.DStreamGraph$$anonfun$1.apply(DStreamGraph.scala:120) 
     at org.apache.spark.streaming.DStreamGraph$$anonfun$1.apply(DStreamGraph.scala:120) 
     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251) 
     at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251) 
     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) 
     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) 
     at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251) 
     at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105) 
     at org.apache.spark.streaming.DStreamGraph.generateJobs(DStreamGraph.scala:120) 
     at org.apache.spark.streaming.scheduler.JobGenerator$$anonfun$2.apply(JobGenerator.scala:247) 
     at org.apache.spark.streaming.scheduler.JobGenerator$$anonfun$2.apply(JobGenerator.scala:245) 
     at scala.util.Try$.apply(Try.scala:161) 
     at org.apache.spark.streaming.scheduler.JobGenerator.generateJobs(JobGenerator.scala:245) 
     at org.apache.spark.streaming.scheduler.JobGenerator.org$apache$spark$streaming$scheduler$JobGenerator$$processEvent(JobGenerator.scala:181) 
     at org.apache.spark.streaming.scheduler.JobGenerator$$anon$1.onReceive(JobGenerator.scala:87) 
     at org.apache.spark.streaming.scheduler.JobGenerator$$anon$1.onReceive(JobGenerator.scala:86) 
     at org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48) 
+1

Ich bekomme seit den letzten Stunden genau den gleichen Fehler. Dies ergibt sich aus einem unschuldigen - 'ordersPast.map { order => (order.pog -> order.bucket) }' – Mohitt

+1

Gut zu hören, dass ich nicht allein bin, kein env Problem. Auch sehr intermittierend für dich? Ich habe auch die Frage hier gepostet, falls Sie es folgen wollen: https://forums.databricks.com/questions/6601/javaioioexception-class-not-found-on-long-running.html –

+0

Dies ist für die erste gekommen Zeit und hat mich überrascht. Vielen Dank für den Link zum Databrick. – Mohitt

Antwort

2

Ich werde eine Antwort auf meine eigene Frage posten. Ich denke, das passiert, wenn Sie eine Streaming-App starten und dann die Jar-Datei, die in der Spark-Submission verwendet wurde, entfernen oder ersetzen. Wahrscheinlich versucht die ausführende JVM Spark-Treiberanwendung, einige Klassen aus einer JAR-Datei zu laden, die nicht mehr vorhanden ist oder ersetzt wurde.

Ich weiß nicht, dass das wahr ist, aber ich sehe ein gewisses Interesse an dieser Frage, also denke ich, dass es gut ist, mein aktuelles Denken zu posten.

+0

Das ist in meinem Fall durchaus möglich, weil ich das tat, als ich den Fehler sah. Außerdem hatte ich mehrere Funken-Streaming-Jobs, die gleichzeitig fehlschlugen, wo alle aus dem gleichen Glas kamen. Das würde also sehr viel Sinn machen. Ich werde eine Bestätigung erneut ausführen. Vielen Dank! –