2016-04-26 147 views
5

我想在远程服务器上的纱线群集上运行Spark流应用程序。默认的java版本是1.7,但我想为我的应用程序使用1.8,这也是在服务器中,但不是默认值。有没有办法指定通过spark-submit java 1.8的位置,以便我不会得到major.minor错误?如何指定在spark-submit命令中使用哪个Java版本?

+1

您使用maven吗?如果是这样,你可以在pom.xml中指定java版本 –

+3

也许你可以在spark-submit之前设置JAVA_HOME。这样的:“JAVA_HOME = /路径/要/ JAVA ./bin/spark-submit ......” – Hlib

+2

设置JAVA_HOME前的火花提交命令为我工作。谢谢:) – Priyanka

回答

2

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

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

9

JAVA_HOME是不够的,在我们的情况下,司机在Java 8上运行,但后来我发现在纱星火工人使用的Java 7(Hadoop的节点都安装了Java版本)启动。

我不得不在spark-defaults.conf添加spark.executorEnv.JAVA_HOME=/usr/java/<version available in workers>。请注意,您可以在命令行中使用--conf来提供它。

请参阅http://spark.apache.org/docs/latest/configuration.html#runtime-environment

+0

对于那些没有访问/权限检查工作器节点上的Java版本是谁,用'spark.range(0,100).mapPartitions(_。地图(_ => java.lang.System.getProperty(“java.version”)))。show'进行完整性检查。通过yarn/spark UI确定运行时Java版本可能太难了 –

相关问题