2016-04-26 71 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版本可能太難了 –

相關問題