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

问题描述 投票:8回答:4

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

java yarn spark-streaming
4个回答
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


3
投票

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

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


1
投票

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


1
投票

如果要为spark on yarn设置java环境,可以在spark-submit之前设置它

--conf spark.yarn.appMasterEnv.JAVA_HOME=/usr/java/jdk1.8.0_121 \
© www.soinside.com 2019 - 2024. All rights reserved.