升级了spark版本,在spark作业遇到java.lang.NoSuchMethodError:scala.Product.$init$(Lscala/Product;)V时

升级了spark版本,在spark作业遇到java.lang.NoSuchMethodError:scala.Product.$init$(Lscala/Product;)V时,scala,apache-spark,Scala,Apache Spark,我们最近为ETL项目从Spark 2.4.2升级到了2.4.5 部署更改并运行作业后,我看到以下错误: Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.in

我们最近为ETL项目从Spark 2.4.2升级到了2.4.5

部署更改并运行作业后,我看到以下错误:

    Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.spark.deploy.worker.DriverWrapper$.main(DriverWrapper.scala:65)
    at org.apache.spark.deploy.worker.DriverWrapper.main(DriverWrapper.scala)
Caused by: java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V
    at com.advisory.pic.etl.utils.OracleDialect$.<init>(OracleDialect.scala:12)
    at com.advisory.pic.etl.utils.OracleDialect$.<clinit>(OracleDialect.scala)
    at com.advisory.pic.etl.drivers.BaseDriver.$init$(BaseDriver.scala:19)
    at com.advisory.pic.etl.drivers.PASLoadDriver$.<init>(PASLoadDriver.scala:19)
    at com.advisory.pic.etl.drivers.PASLoadDriver$.<clinit>(PASLoadDriver.scala)
    at com.advisory.pic.etl.drivers.PASLoadDriver.main(PASLoadDriver.scala)
    ... 6 more

关于出现上述问题的原因以及如何验证版本不匹配的建议?

我认为这是由于编译代码的Scala版本与运行时的Scala版本不匹配造成的

Spark 2.4.2是使用Scala 2.12预构建的,但Scala 2.4.5是使用Scala 2.11预构建的,如-

如果使用2.11中编译的spark库,这个问题应该会消失

compile group: 'org.apache.spark', name: 'spark-core_2.11', version: '2.4.5'

谢谢你,萨利姆,这帮了我的忙,乔布斯的工作也如期进行。但是当我看到你上面链接的文档时,我仍然有一个疑问。我发现了以下内容:)。最好的方法是使用2.12.x(x是需要找到的),还是可以根据以下信息做出决定:?不幸的是,Scala 2.11上提供了预构建的Spark standalone 2.4.5。我们可以使用Scala 2.12-构建它。有趣的是,Databricks还支持Spark 2.4.5和Scala 2.11-
compile group: 'org.apache.spark', name: 'spark-core_2.11', version: '2.4.5'