私はsparkでいくつかのロジックを実装しました。このロジックの実行は、Javaコードに渡されるパラメータによって異なります。私の主な方法では、私はスイッチケースを持っています。正しいパラメータを渡すと、すべて正常に動作します。スイッチのケースにないランダムなパラメータを渡すと、Spark Exceptionが発生します。失敗したステータスで終了しました。メインメソッドが何もしていないときにクラスターモードのSpark Submitが失敗する
クライアントモードで同じコードを実行すると、間違ったパラメータで例外がスローされることはありませんが、これは正しい動作だと思います。
パラメータが正しい場合にのみコンテキストを作成しています。したがって、基本的にクラスターモードで空のmainメソッドを与えると、例外が発生します。
誰かがこの仕組みを私に説明できますか?どうすればこの例外を回避できますか。
public class MyClass{
private JavaSparkContext context = null;
private HiveContext hiveContext = null;
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.startProcessing(args);
}
start処理方法にはスイッチケースが含まれています。
おかげ
スタックトレース:
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)
ありがとうございます。私は今その理由を理解しています。そのような詳細を説明してくれてありがとう。 – user1544460