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"など)私は同じエラーが出ます。どうすれば修正できますか?
あなたの依存関係は何ですか?あなたはどのようにアプリケーションを組み立てるのですか? CLASSPATHとは何ですか? –
これは、通常、サーバー上のScalaのバージョンとジョブがコンパイルされたバージョンとの間に不一致があることを意味します。それらが一致していることを確認してください(両方の場合は2.11.x、両方の場合は2.10.x) –
ありがとうございます。私はバージョンを2.10から2.11に変更して動作します。 –