“线程中的异常”;“主要”;java.lang.NoSuchMethodError:scala.Predef$.longarayops([J)[J]
我有一个简单的Scala对象,它创建RDD,然后收集并打印所有元素 我在Eclipse上创建了一个Maven项目,并添加了Scala库2.12.3 在pom.xml中,我添加了spark 2.4.3依赖项,如下所示:“线程中的异常”;“主要”;java.lang.NoSuchMethodError:scala.Predef$.longarayops([J)[J],java,scala,apache-spark,Java,Scala,Apache Spark,我有一个简单的Scala对象,它创建RDD,然后收集并打印所有元素 我在Eclipse上创建了一个Maven项目,并添加了Scala库2.12.3 在pom.xml中,我添加了spark 2.4.3依赖项,如下所示: <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <versi
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>2.4.3</version>
</dependency>
罪魁祸首似乎是scala代码中的r1.collect.foreach(println),其中r1是从范围(1,50)创建的rdd
是的,我在Eclipse上有Scala 2.12.3和Spark 2.4.3,还有我的终端,所以版本不兼容似乎不是问题所在
有人可以帮忙吗?这是一个明确的版本问题。尽管您声称使用2.12.x,但似乎没有其他东西指向旧版本的scala,请尝试清理和构建。请验证您使用的maven或sbt中的依赖项 也做 文件->项目结构->全局库->删除SDK->重建 如果您使用的是intellij,则类路径下的所有外部库将如下图所示…在外部库部分下列出 找到递减的一种方法是使用classloader
val urls = urlsinclasspath(getClass.getClassLoader).foreach(println)
def urlsinclasspath(cl: ClassLoader): Array[java.net.URL] = cl match {
case null => Array()
case u: java.net.URLClassLoader => u.getURLs() ++ urlsinclasspath(cl.getParent)
case _ => urlsinclasspath(cl.getParent)
}
使用此功能,您可以打印从intellij或使用群集的驱动程序运行的项目的类路径中的所有JAR。谢谢@Ram我在pom.xml中列出了以下依赖项
junit junit 3.8.1测试
org.scala-lang scala library 2.12.3 org.apache.spark spark-core_2.12 2.4.3也在我的Eclipse IDE中,scala library容器[2.12.3]是作为Maven项目的一部分导入的。在我的终端中,scala版本是scala code runner版本2.12.3——版权2002-2017,LAMP/EPFL和Lightbend,Inc.好的,所以我刚刚检查了Spark 2.4.3正在使用的scala版本,它似乎是2.11.12/Spark submit——版本欢迎使用_____/使用Scala 2.11.12版**OpenJDK 64位服务器虚拟机,用户在2019-05-01T05:08:38Z修订版上编译的1.8.0分支
我如何使Spark 2.4.3在Scala 2.12.3上运行?如果您同意以下答案
val urls = urlsinclasspath(getClass.getClassLoader).foreach(println)
def urlsinclasspath(cl: ClassLoader): Array[java.net.URL] = cl match {
case null => Array()
case u: java.net.URLClassLoader => u.getURLs() ++ urlsinclasspath(cl.getParent)
case _ => urlsinclasspath(cl.getParent)
}