2016-08-05 15 views
1

Ich kann keinen einfachen Job übergeben, der nur eine System.out.println() ausführt. Hier ist der Fehler, den ich vom SnappyData Lead zurückbekomme. HierIch kann keinen einfachen SnappySQLJob senden

snappy-job.sh submit --lead 10.0.18.66:8090 --app-name SimpleJobApp 
--class snappydata.jobs.SimpleJob --app-jar simpleJob.jar OKOK{ "status": "ERROR", "result": { 
    "message": "null", 
    "errorClass": "scala.MatchError", 
    "stack": ["spark.jobserver.JobManagerActor$$anonfun$spark$jobserver$JobManagerActor$$getJobFuture$4.apply(JobManagerActor.scala:244)", "scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)", "scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)", "java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)", "java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)", "java.lang.Thread.run(Thread.java:745)"] } 

ist der Job:

public class SimpleJob implements SnappySQLJob { 

    /** 
    * 
    */ 
    public SimpleJob() { 
     System.out.println(getClass().getSimpleName()+" Created"); 
    } 

    @Override 
    public Object runJob(Object sparkContext, Config jobConfig) { 
     SnappyContext snappyContext = (SnappyContext)sparkContext; 
     System.out.println(getClass().getSimpleName()+".runJob: executed"); 
     return null; 
    } 

    @Override 
    public SparkJobValidation validate(Object sparkContext, Config jobConfig) { 
     SnappyContext snappyContext = (SnappyContext)sparkContext; 
     System.out.println(getClass().getSimpleName()+".validate: executed"); 
     return null; 
    } 

} 

Hier ist die SnappyData Blei Log:

16/08/05 17: 44: 07,352 UTC SnappyLeadJobServer-akka.actor.default-Dispatcher -14 INFO JarManager: Speichern von Glas für app SimpleJobApp, 1052 Bytes 16.08.05 17: 44: 07,368 UTC SnappyLeadJobServer-akka.actor.default-Dispatcher-19 INFO LocalContextSupervisorActor: einen Namen SparkContext Erstellen snappyContext1470419047337607598 16.08.05 17: 44: 07.369 UTC SnappyLeadJobServer-akka.actor.default-dispatcher-16 INFO Jo bManagerActor: Starten des Schauspielers spark.jobserver.JobManagerActor 16/08/05 17: 44: 07.371 UTC SnappyLeadJobServer-akka.actor.default-dispatcher-16 INFO JobStatusActor: Starten des Schauspielers spark.jobserver.JobStatusActor 16/08/05 17:44: 07,371 UTC SnappyLeadJobServer-akka.actor.default-Dispatcher-14 INFO JobResultActor: Ausgang Schauspieler spark.jobserver.JobResultActor 16.08.05 17: 44: 07,371 UTC SnappyLeadJobServer-akka.actor.default-Dispatcher-17 INFO LocalContextSupervisorActor: SparkContext snappyContext1470419047337607598 16/08/05 17: 44: 07.375 UTC SnappyLeadJobServer-akka.actor.default-dispatcher-16 INFO RddManagerActor: Startakteur spark.jobserver.RddManagerActor 16/08/05 17: 44: 07.389 UTC SnappyLeadJobServer-akka.actor. default-dispatcher-17 INFO JobManagerActor: Lade Klasse snappydata.jobs.SimpleJob für App SimpleJobApp 16/08/05 17: 44: 07.389 UTC SnappyLeadJobServer-akka.actor.default-dispatcher-17 INFO SparkContext: JAR/tmp/spark- hinzugefügt Jobserver/Datei/Daten/SimpleJobApp-2016-08-05 T17_44_07.353Z.jar bei http://10.0.18.66:50772/jars/SimpleJobApp-2016-08-05T17_44_07.353Z.jar mit Zeitstempel 1470419047389 16.08.05 17: 44: 07,390 UTC SnappyLeadJobServer-akka.actor.default-Dispatcher-17 INFO ContextURLClassLoader: hinzugefügt URL file:/tmp/Funke Job Server/filedao/data/SimpleJobApp-2016-08-05T17_44_07.353Z.jar zu ContextURLClassLoader 16.08.05 17: 44: 07,390 UTC SnappyLeadJobServer-akka.actor.default-Dispatcher-17 INFO JarUtils $: Laden Objekts snappydata.jobs.SimpleJob $ mit Lader Funken .jobserver.util.ContextURLClassLoader @ 709f3e69 16.08.05 17: 44: 07,391 UTC SnappyLeadJobServer-akka.actor.default-Dispatcher-17 INFO JarUtils $: Laden Klasse snappydata.jobs.SimpleJob mit Lader spark.jobserver.util.ContextURLClassLoader @ 709f3e69 16.08.05 17: 44: 07,392 UTC SnappyLeadJobServer-akka.actor.default-Dispatcher-17 INFO JobManagerActor: ab Funkenjob 376c8d23-6b49-4138-AADD-e4cff8f9f945 [snappydata.jobs.SimpleJob] ... 16/08/05 17: 44: 07.398 UTC pool-29-thread-1 INFO JobManagerActor: Start-Job zukünftiger Thread 16/08/05 17: 44: 07.402 UTC SnappyLeadJobServer-akka.actor.default-dispatcher-17 INFO JobStatusActor: Job 376c8d23-6b49-4138-aadd-e4cff8f9f945 mit einem Fehler beendet 16/08/05 17: 44: 07.402 UTC pool-29-thread-2 WARN JobManagerActor: Ausnahme von Job 376c8d23-6b49-4138-aadd-e4cff8f9f945: scala.MatchError: null bei spark.jobserver.JobManagerActor $$ anonfun $ spark $ jobserver $ JobManagerActor $$ getJobFuture $ 4.apply (JobManagerActor.scala: 244) um scala.concurrent.impl.Future $ PromiseCompletingRunnable.liftedTree1 $ 1 (Future.scala: 24) unter scala.concurrent.impl.Future $ PromiseCompletingRunnable.run (Future.scala: 24) unter java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor .java: 1142) bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) bei java.lang.Thread.run (Thread.java:745)

+0

Java-Programm mit Scala-Implementierung zeigt diesen Fehler. Ich habe diesen Job in Java geschrieben –

Antwort

2

Java-Programm mit scala APIs gibt diese error.Ich habe SimpleJob mit Java A geschrieben PIs.

public class SimpleJob extends JavaSnappySQLJob { 

    public SimpleJob() { 
    System.out.println(getClass().getSimpleName()+" Created"); 
    } 

    @Override 
    public Object runJavaJob(SnappyContext snappyContext, Config config) { 
     System.out.println(getClass().getSimpleName()+".runJob:  
     executed"); 
     return null; 
    } 

    @Override 
    public JSparkJobValidation isValidJob(SnappyContext snappyContext, Config config) { 
System.out.println(getClass().getSimpleName()+".validate: executed"); 
return new JSparkJobValid(); 
} 

} 
+0

Großartig! Das lief. Folge der Frage. Die SimpleJob.java verwendet StdOut. Ich sehe nicht, dass dies an die SnappyData-Lead-Protokolle weitergeleitet wird. Welche Protokollierungs-API sollte ich stattdessen verwenden, um meine Protokolle anzuzeigen? SLF4j? Reguläres Log4J? Java-Protokollierung? – Jason

+0

Vorzugsweise slf4j (direkt mit log4j 1.x wird auch funktionieren). – Sumedh