2015-02-06 5 views
21

Ich versuche, einfaches Projekt mit Apache Spark auszuführen. Dies ist mein Code SimpleApp.scalaFEHLER Utils: Uncaught Ausnahme im Thread SparkListenerBus

/* SimpleApp.scala */ 
import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkConf 

object SimpleApp { 
    def main(args: Array[String]) { 
    val logFile = "/home/hduser/spark-1.2.0-bin-hadoop2.4/README.md" // Should be some file on your system 
    // val conf = new SparkConf().setAppName("Simple Application") 
    val sc = new SparkContext("local", "Simple Job", "/home/hduser/spark-1.2.0-bin-hadoop2.4/") 
    val logData = sc.textFile(logFile, 2).cache() 
    val numAs = logData.filter(line => line.contains("hadoop")).count() 
    val numBs = logData.filter(line => line.contains("see")).count() 
    println("Lines with hadoop: %s, Lines with see: %s".format(numAs, numBs)) 
    } 
} 

wenn ich diesen Job manuell senden mit Befehlszeile Spark: /home/hduser/spark-1.2.0-hadoop-2.4.0/bin/spark-submit --class "SimpleApp" --master local[4] target/scala-2.10/simple-project_2.10-1.0.jar es erfolgreich ausgeführt wird.

wenn ich mit sbt run und mit dem Dienst Apache Funke laufen läuft, dann ist es Erfolg, aber am Ende ist es von log geben Fehler wie folgt aus:

15/02/06 15:56:49 ERROR Utils: Uncaught exception in thread SparkListenerBus 
java.lang.InterruptedException 
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:996) 
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303) 
    at java.util.concurrent.Semaphore.acquire(Semaphore.java:317) 
    at org.apache.spark.scheduler.LiveListenerBus$$anon$1$$anonfun$run$1.apply$mcV$sp(LiveListenerBus.scala:48) 
    at org.apache.spark.scheduler.LiveListenerBus$$anon$1$$anonfun$run$1.apply(LiveListenerBus.scala:47) 
    at org.apache.spark.scheduler.LiveListenerBus$$anon$1$$anonfun$run$1.apply(LiveListenerBus.scala:47) 
    at org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1460) 
    at org.apache.spark.scheduler.LiveListenerBus$$anon$1.run(LiveListenerBus.scala:46) 
15/02/06 15:56:49 ERROR ContextCleaner: Error in cleaning thread 
java.lang.InterruptedException 
    at java.lang.Object.wait(Native Method) 
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135) 
    at org.apache.spark.ContextCleaner$$anonfun$org$apache$spark$ContextCleaner$$keepCleaning$1.apply$mcV$sp(ContextCleaner.scala:136) 
    at org.apache.spark.ContextCleaner$$anonfun$org$apache$spark$ContextCleaner$$keepCleaning$1.apply(ContextCleaner.scala:134) 
    at org.apache.spark.ContextCleaner$$anonfun$org$apache$spark$ContextCleaner$$keepCleaning$1.apply(ContextCleaner.scala:134) 
    at org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1460) 
    at org.apache.spark.ContextCleaner.org$apache$spark$ContextCleaner$$keepCleaning(ContextCleaner.scala:133) 
    at org.apache.spark.ContextCleaner$$anon$3.run(ContextCleaner.scala:65) 

Jede falsch in meinem Code? Danke im Voraus. Ich benutze Apache Funke 1.2.0-bin-Hadoop-2.4, scala 2.10.4

Antwort

21

Nach this mail archive, d.h .:

Hallo Haoming,

Sie können diese Fehler ignorieren. Dies wird am Ende der Ausführung gedruckt, wenn wir bereinigen und den Dämonkontextreinigung Thread beenden. In der Zukunft wäre es gut, diese besondere Nachricht zum Schweigen zu bringen, da sie für die Benutzer verwirrend sein könnte.

Andrew

der Fehler nicht berücksichtigt werden konnten.

+0

ohh ich sehe Herr. Ich denke, das Problem kommt von meinem Code, aber in der Tat ist es Protokoll für die Reinigung der Arbeit von Funken. Danke mein Herr. – Bobs

+0

Ist dieses Problem behoben? Ich betreibe mit funke-1.5.1 und hive-1.2.1 im Garn-Cluster-Modus hive-on-spark. Empfangen des gleichen Fehlers "Uncaught Fehler im Thread SparkListenerBus, Stoppen SparkContext java.lang.AbstractMethodError " – Arvindkumar

+0

@Arvindkumar dieses Problem gelöst ist und jetzt kann ich es normal verwenden. – Bobs

34

Die SparkContext oder SparkSession (Spark> = 2.0.0) gestoppt werden soll, wenn der Funkencode durch Hinzufügen oder sc.stopspark.stop (Spark> = 2.0.0) am Ende des Codes ausgeführt wird.

+0

Danke, das habe ich vergessen. –

+0

Ich denke, das sollte die Antwort sein. –

Verwandte Themen