如何在AWS EMR集群中使用java运行时11

Dil*_*ima 6 java amazon-emr apache-spark java-11

我在 EMR aws 中造成混乱,当 Spark 运行我的应用程序时,我收到以下错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: 
com/example/demodriver/MyClassFromJAR has been compiled by a more recent version of the Java Runtime (class file version 55.0), 
this version of the Java Runtime only recognizes class file versions up to 52.0
Run Code Online (Sandbox Code Playgroud)

emr-6.5.0在集群上使用releaseLabel,我的驱动程序jar是用java11构建的

如何在EMR中运行java11应用程序?或者这个错误与其他原因有关?

Ste*_*ven 6

在最新版本的 EMR 中,安装了 java 11。要启用它,您可以提供以下配置

[
    {
        "Classification": "spark-env",
        "Configurations": [
            {
                "Classification": "export",
                "Properties": {
                    "JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64"
                }
            }
        ]
    },
    {
        "Classification": "spark-defaults",
        "Properties": {
            "spark.executorEnv.JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

这似乎没有记录。

和可能包含与 java 11 不兼容的选项defaultJavaOptionsextraJavaOptions您可能仍然需要调整/更新。

更新:

从 EMR 6.12.0 开始,使用上面指定的方法,官方支持多个 jvm。