如何在spark-submit命令中指定要使用的java版本?

时间:2016-04-26 11:27:20

标签: java yarn spark-streaming

我想在远程服务器上的纱线群集上运行火花串流应用程序。默认的java版本是1.7,但我想使用1.8作为我的应用程序,它也在服务器中,但不是默认的。有没有办法通过spark-submit指定java 1.8的位置,以便我不会遇到major.minor错误?

5 个答案:

答案 0 :(得分:11)

JAVA_HOME在我们的情况下是不够的,驱动程序在java 8中运行,但我后来发现YARN中的Spark工作人员是使用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

答案 1 :(得分:3)

虽然您可以强制驱动程序代码在特定Java版本上运行(export JAVA_HOME=/path/to/jre/ && spark-submit ... ),工作人员将使用来自工作机器的纱线用户PATH的默认Java版本执行代码。

您可以通过编辑JAVA_HOME文件(documentation)将每个Spark实例设置为使用特定spark-env.sh

答案 2 :(得分:1)

在spark-env.sh中添加你想要的JAVA_HOME(sudo find -name spark-env.sh ... ej。:/ etc / spark2 / conf.cloudera.spark2_on_yarn / spark-env.sh)

答案 3 :(得分:1)

如果要为纱线上的火花设置Java环境,可以在提交火花之前设置它。

--conf spark.yarn.appMasterEnv.JAVA_HOME=/usr/java/jdk1.8.0_121 \

答案 4 :(得分:0)

将需要为将在YARN上启动的Spark App Master和Spark Executors设置Java版本。因此,spark-submit命令必须包含两个JAVA_HOME设置: spark.executorEnv.JAVA_HOME spark.yarn.appMasterEnv.JAVA_HOME < / strong>

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