2016-08-26 7 views
1

Apache SparkアプリケーションをYARNにプログラマチックに送信します(JavaではScalaではなく)。私は(私のコード)それを実行しようとすると:Sparkアプリケーションがプログラムでサブミットしているときにパラメータ解析中にエラーが発生しました

package application.RestApplication; 

import org.apache.hadoop.conf.Configuration; 
import org.apache.spark.SparkConf; 
import org.apache.spark.deploy.yarn.Client; 
import org.apache.spark.deploy.yarn.ClientArguments; 

public class App { 
    public static void main(String[] args1) { 
     String[] args = new String[] { 
       "--class", "org.apache.spark.examples.JavaWordCount", 
       // "--deploy-mode", "cluster", 
       // "--master", "yarn", 
       // "--driver-memory", "3g", 
       // "--executor-memory", "3g", 
       "--jar", "/opt/spark/examples/jars/spark-examples_2.11-2.0.0.jar", 
       "--arg", "hdfs://hadoop-master:9000/input/file.txt" 
     }; 
     Configuration config = new Configuration(); 
     System.setProperty("SPARK_YARN_MODE", "true"); 
     SparkConf sparkConf = new SparkConf(); 
     ClientArguments cArgs = new ClientArguments(args); 
     Client client = new Client(cArgs, config, sparkConf); 
     client.run(); 
    } 
} 

私は行でエラーが出ます:ClientArguments cArgs = new ClientArguments(args);

Exception in thread "main" java.lang.NoSuchMethodError: scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object; 
    at org.apache.spark.deploy.yarn.ClientArguments.parseArgs(ClientArguments.scala:38) 
    at org.apache.spark.deploy.yarn.ClientArguments.<init>(ClientArguments.scala:31) 
    at application.RestApplication.App.main(App.java:37) 

これは、解析文字列[] argsを持つ問題である - 配列が空のプログラムが起動(パラメータなし=作業なし)。私が正しいパラメータを入力すると(上記のように)、正しくない(例えば "--foo"、 "foo"など)私は同じエラーが出ます。どうすれば修正できますか?

+0

あなたの依存関係は何ですか?あなたはどのようにアプリケーションを組み立てるのですか? CLASSPATHとは何ですか? –

+2

これは、通常、サーバー上のScalaのバージョンとジョブがコンパイルされたバージョンとの間に不一致があることを意味します。それらが一致していることを確認してください(両方の場合は2.11.x、両方の場合は2.10.x) –

+0

ありがとうございます。私はバージョンを2.10から2.11に変更して動作します。 –

答えて

0

Similar question、あなたのマシンに間違ったScalaバージョンがある可能性があります。

ところで、あなたはLivyを確認することができ、あなたの仕事のために良いことがあります:)

関連する問題