Ich habe einige Logik in Spark implementiert. Die Ausführung dieser Logik hängt von dem Parameter ab, der an den Java-Code übergeben wird. In meiner Hauptmethode habe ich einen Schalterfall. Wenn ich einen korrekten Parameter übergebe, funktioniert alles einwandfrei. Wenn ich einen zufälligen Parameter übergebe, der nicht in meinem Switch-Fall ist, erhalte ich Spark Exception. Beendet mit fehlgeschlagenem Status.Spark Submit im Cluster-Modus fehlgeschlagen, wenn die Hauptmethode nichts unternimmt
Wenn ich den gleichen Code im Client-Modus ausführen, wirft es keine Ausnahme mit falschen Parameter, die ich denke, ist das richtige Verhalten.
Ich erstelle nur Kontext, wenn mein Parameter korrekt ist. Also, wenn ich eine leere Hauptmethode im Cluster-Modus gebe, bekomme ich eine Ausnahme.
Kann mir jemand erklären, wie das geht. Wie kann ich diese Ausnahme vermeiden?
public class MyClass{
private JavaSparkContext context = null;
private HiveContext hiveContext = null;
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.startProcessing(args);
}
startProcessing-Methode einfach enthält einen Schalter Fall.
Dank
Stacktrace:
Exception in thread "main" org.apache.spark.SparkException: Application application_1466638963111_3824 finished with failed status
at org.apache.spark.deploy.yarn.Client.run(Client.scala:1036)
at org.apache.spark.deploy.yarn.Client$.main(Client.scala:1083)
at org.apache.spark.deploy.yarn.Client.main(Client.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Vielen Dank. Ich habe jetzt den Grund verstanden. Danke für die Erklärung so ausführlich. – user1544460