我们的产品运行时环境现在使用 Apache Spark 3.4
我的开发环境
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937) Maven 主目录:C:\MAVEN pache-maven-3.9.9 Java 版本:23.0.1,供应商:Oracle Corporation,运行时:C:\Program Files\Java\jdk-23 默认区域设置:en_US,平台编码:UTF-8 操作系统名称:“windows 11”,版本:“10.0”,架构:“amd64”,系列:“windows”
因为我们的产品环境是 3.4,所以我觉得我需要在本地指定相同的版本。
这一切都是从我开始在运行时收到 ArraryOps$ 类的 ClassNotFound 错误开始的。得知此错误是由于 Spark 版本控制造成的,我更新了我的 pom 版本。
现在它在编译时失败,几乎立即退出。 当我点击编译时,它几乎立即退出
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.842 s
[INFO] Finished at: 2024-10-30T15:50:55-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:4.9.2:compile (default) on project WUfBDSReporting: scala compilation failed -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal net.alchim31.maven:scala-maven-plugin:4.9.2:compile (default) on project WUfBDSReporting: scala compilation failed
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
顶级错误:无法执行目标net.alchim31.maven:scala-maven-plugin:4.9.2:compile
在日志记录中提到:由:org.apache.maven.plugin.MojoFailureException:scala编译失败
看帖子,
无法执行目标net.alchim31.maven:scala-maven-plugin:3.2.0:编译(scala-compile) 和 https://github.com/davidB/scala-maven-plugin/issues/224 他们将 scala-maven-plugin 更新到了 3.3.3。 我尝试过 3.3.3、4.9.2 以及其他各种版本。
选择的 Scala 版本基于
但是我仍然收到同样的问题。
同一错误的更多部分
[INFO]
[INFO] last tree to typer: EmptyTree
[INFO] tree position: unknown
[INFO] tree tpe: notype
[INFO] symbol: null
[INFO] call site: <none> in <none
[INFO]
[INFO] == Source file context for tree position ==
[INFO]
[INFO]
[INFO] at scala.reflect.internal.Reporting.abort(Reporting.scala:69)
[INFO] at scala.reflect.internal.Reporting.abort$(Reporting.scala:65)
[INFO] at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:28)
[ERROR] at scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.errorBadIndex(ClassfileParser.scala:407)
[ERROR] at scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.getExternalName(ClassfileParser.scala:262)
对此了解甚少,我有点迷失
来自Spark 在 Java 8/11/17、Scala 2.12/2.13、Python 3.7+ 和 R 3.5+ 上运行。从 Spark 3.4.0 开始,Python 3.7 支持已弃用。 自 Spark 3.4.0 起,已弃用 8u362 版本之前的 Java 8 支持。使用 Scala API 时,应用程序必须使用与 Spark 编译时相同的 Scala 版本。例如,当使用 Scala 2.13 时,使用为 2.13 编译的 Spark,并为 Scala 2.13 编译代码/应用程序。
JDK2.12232020年12月2日
听起来你想设置一个本地环境来在你的机器上进行一些测试,但该作业将在cloudera中执行。Spark版本3.4.23.4.13.4.0
Cloudera 支持的二进制版本 斯卡拉 2.12 2.12 2.12.17 2.12 2.12.17 2.12 2.12.17
看起来 JDK 23 还不是一个选项。我认为你需要将 JDK 降级到较低版本。不知道为什么你需要目标和源为 1.8,也许你可以升级到 jdk 11。
我的猜测是问题不完全在于插件。我会重点检查您需要使用的 jdk、scala 和 apache Spark 之间哪些是正确的版本
我认为 Apache Spark、JDK 和 Scala 版本的组合不会起作用。
Apache Spark 3.4 不支持 jdk 23。