web-dev-qa-db-ja.com

どのJavaバージョンをspark-submitコマンドで使用するように指定するのですか?

sparkストリーミングアプリケーションをリモートサーバーの糸クラスターで実行したい。デフォルトのJavaバージョンは1.7だが、アプリケーションに1.8を使用したいこれはサーバーにもありますが、デフォルトではありません。spark-submitでJava 1.8の場所を指定して、major.minorエラーが発生しないようにする方法はありますか?

12
Priyanka

私たちの場合、Java_HOMEは十分ではなく、ドライバはJava 8で実行されていましたが、Spark YARNのワーカーがJava 7(hadoopノードには両方のJavaバージョンがインストールされています)。

spark.executorEnv.Java_HOME=/usr/Java/<version available in workers>spark-defaults.confを追加する必要がありました。コマンドラインで--confを指定できることに注意してください。

http://spark.Apache.org/docs/latest/configuration.html#runtime-environment を参照してください

12
mathieu

特定のJavaバージョン(export Java_HOME=/path/to/jre/ && spark-submit ...)、ワーカーはコードを実行しますJavaワーカーユーザーのPATHからのユーザーのマシンのバージョンからのバージョン)。

あなたができることは、各Sparkインスタンスを特定のJava_HOMEを編集してspark-env.shファイル( ドキュメント )。

3
Radu

Javaの環境をsparkの糸に設定する場合は、spark-submitの前に設定できます。

--conf spark.yarn.appMasterEnv.Java_HOME=/usr/Java/jdk1.8.0_121 \
1
Masterbuilder

必要なJava_HOMEをspark-env.shに追加します(Sudo find -name spark-env.sh ... ej。:/etc/spark2/conf.cloudera.spark2_on_yarn/spark-env.sh)

1
Carlos Gomez

Javaバージョンは、Spark App MasterとSparkで起動される実行プログラムの両方に設定する必要があります。 YARN。したがって、spark-submitコマンドには、2つのJava_HOME設定を含める必要があります:spark.executorEnv.Java_HOMEおよびspark.yarn.appMasterEnv.Java_HOME

spark-submit --class com.example.DataFrameExample --conf "spark.executorEnv.Java_HOME=/jdk/jdk1.8.0_162" --conf "spark.yarn.appMasterEnv.Java_HOME=/jdk/jdk1.8.0_162" --master yarn --deploy-mode client /spark/programs/DataFrameExample/target/scala-2.12/dfexample_2.12-1.0.jar
0
Avinash Ganta