簡體   English   中英

如何指定在 spark-submit 命令中使用哪個 Java 版本?

[英]How to specify which java version to use in spark-submit command?

我想在遠程服務器上的紗線集群上運行火花流應用程序。 默認的 Java 版本是 1.7,但我想為我的應用程序使用 1.8,它也在服務器中,但不是默認版本。 有沒有辦法通過 spark-submit 指定 java 1.8 的位置,這樣我就不會出現major.minor 錯誤?

在我們的例子中 JAVA_HOME 是不夠的,驅動程序在 java 8 中運行,但我后來發現 YARN 中的 Spark 工作線程是使用 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

盡管您可以強制驅動程序代碼在特定的 Java 版本上運行( export JAVA_HOME=/path/to/jre/ && spark-submit ... ),但工作人員將使用 yarn 用戶的 PATH 中的默認 Java 版本執行代碼從工人機器。

您可以做的是通過編輯spark-env.sh文件( 文檔)將每個 Spark 實例設置為使用特定的JAVA_HOME

如果要在yarn上為spark設置java環境,可以在spark-submit之前設置

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

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

需要為將在 YARN 上啟動的 Spark App Master 和 Spark Executors 設置 Java 版本。 因此 spark-submit 命令必須包含兩個 JAVA_HOME 設置: spark.executorEnv.JAVA_HOMEspark.yarn.appMasterEnv.JAVA_HOME

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM