使用 EMR Serverless 自定义镜像运行报错

0

【以下的问题经过翻译处理】 你好,团队,

我想在 EMR Serverless 上运行使用 JDK 11 构建的 Spark 应用程序。由于默认映像不支持 JDK 11,因此我根据以下链接创建了自定义映像:

Use case 2 : https://aws.amazon.com/ru/blogs/big-data/add-your-own-libraries-and-application-dependencies-to-spark-and-hive-on-amazon-emr-serverless-with-custom-images/

https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/using-custom-images.html

这是我的 DockerFile 的内容(我使用的是 M1 Mac):

FROM--platform=linux/amd64 public.ecr.aws/emr-serverless/spark/emr-6.9.0:latest
USER root
# install JDK 11
RUN sudo amazon-linux-extras install java-openjdk11
# EMRS will run the image as hadoop
USER hadoop:hadoop

将映像上传到 ECR 后,我使用相同的自定义映像创建了 EMR Serverless 应用程序(x86_64)。接下来,我尝试提交使用 JDK 11 构建的 jar 文件的作业,但是,它失败了,并出现了以下错误:

The job run failed to be submitted to the application or it completed unsuccessfully.

然后,根据上述第二个链接,我在配置作业时尝试了给出以下两个 Spark 配置:

--conf spark.executorEnv.JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.16.0.8-1.amzn2.0.1.x86_64 
--conf spark.driverEnv.JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.16.0.8-1.amzn2.0.1.x86_64

我仍然遇到以下错误:

Job failed, please check complete logs in configured logging destination. ExitCode: 1. Last few exceptions: Caused by: java.lang.UnsupportedClassVersionError: <ClassName> has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version

profile picture
专家
已提问 7 个月前64 查看次数
1 回答
0

【以下的回答经过翻译处理】 我可以在JDK11环境中运行我的jar包。JAVA_HOME的正确驱动程序环境变量是spark.emr-serverless.driverEnv.JAVA_HOME。同时,部署的最新JDK版本为java-11-openjdk-11.0.18.0.10-1.amzn2.0.1.x86_64

profile picture
专家
已回答 7 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则