为Spark Application指定不同的JDK版本需要在编译和执行过程中分别进行设置,本文将详细说明具体步骤。
一、编译过程中的JDK版本指定
1. 在POM文件中指定JDK版本
在编译Spark Application的过程中,我们可以在POM文件中指定JDK版本。打开POM文件,找到maven-compiler-plugin插件,添加以下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source><!--指定JDK版本-->
<target>1.8</target><!--指定编译目标JDK版本-->
<encoding>UTF-8</encoding>
</configuration>
</plugin>
在这个配置里面,
需要注意的是,在指定版本号时要遵循以下规则:
- if source is between 1.6 and 1.8 (inclusive): target can't be less than source and can't be greater than 1.8。
- if source is greater than 1.8: target can be any value you want。
这意味着,如果你的源代码使用JDK1.8编写而你需要编译成JDK1.7,这将会是不允许的。
2. 使用maven命令编译
使用配置后,就可以像正常的方式编译Spark Application了,执行以下命令即可:
mvn compile
二、运行过程中的JDK版本指定
在Spark应用程序的运行过程中,我们可以指定使用的JDK版本,具体命令如下:
spark-submit --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -Djdk.version=1.8" \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
--num-executors 2 \
--driver-memory 2g \
--executor-memory 2g \
--executor-cores 2 \
--queue default \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.0.jar \
10
在这个命令里,我们使用了spark.executor.extraJavaOptions参数来指定使用JDK1.8,这样就可以在运行Spark应用程序时使用指定版本的JDK了。
此外,我们可以将该命令封装成脚本并执行即可。
三、示例说明
示例一:使用JDK1.8编译
在POM文件中指定JDK版本为1.8:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source><!--指定JDK版本-->
<target>1.8</target><!--指定编译目标JDK版本-->
<encoding>UTF-8</encoding>
</configuration>
</plugin>
执行以下命令进行编译:
mvn compile
示例二:运行时指定JDK版本
在运行Spark应用程序时,使用JDK1.8:
spark-submit --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -Djdk.version=1.8" \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
--num-executors 2 \
--driver-memory 2g \
--executor-memory 2g \
--executor-cores 2 \
--queue default \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.0.jar \
10
执行以上命令即可在运行Spark应用程序时使用指定版本的JDK。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何为Spark Application指定不同的JDK版本详解 - Python技术站