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

Pri*_*nka 11 java hadoop-yarn spark-streaming

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

mat*_*ieu 12

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

  • 对于那些没有访问/权限来检查工作节点上的java版本的人,请使用`spark.range(0,100).mapPartitions(_.map(_ => java.lang.System.getProperty("java.version") "))).show`进行健全性检查.通过yarn/spark UI确定运行时java版本可能太难了 (2认同)

Rad*_*adu 4

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

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