Scala ApacheSpark:java.lang.NoSuchMethodError.RDDTopairRDDFfunctions

Scala ApacheSpark:java.lang.NoSuchMethodError.RDDTopairRDDFfunctions,scala,apache-spark,Scala,Apache Spark,sbt包运行正常,但在spark submit之后,我得到了错误: 线程“main”java.lang.NoSuchMethodError中出现异常: org.apache.spark.SparkContext$.rddtopairddffunctions(Lorg/apache/spark/rdd/rdd;Lscala/reflect/ClassTag;Lscala/reflect/ClassTag;Lscala/math/Ordering;)Lorg/apache/spark/rdd/pai

sbt包
运行正常,但在
spark submit
之后,我得到了错误:

线程“main”java.lang.NoSuchMethodError中出现异常: org.apache.spark.SparkContext$.rddtopairddffunctions(Lorg/apache/spark/rdd/rdd;Lscala/reflect/ClassTag;Lscala/reflect/ClassTag;Lscala/math/Ordering;)Lorg/apache/spark/rdd/pairddfunctions; 在SmokeStack$.main(SmokeStack.scala:46)处 烟囱。主烟囱(烟囱。scala)位于 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于 invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:498) org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:736) 在 org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185) 位于org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210) 位于org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124) 位于org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

下面是令人不快的一句话:

val sigCounts = rowData.map(row => (row("Signature"), 1)).countByKey()
rowData
是一个RDD映射[String,String]。“签名”密钥存在于地图中的所有项目中

我怀疑这可能是一个构建问题。以下是我的sbt文件:

name := "Example1"
version := "0.1"
scalaVersion := "2.11.8"

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.2.0"
scalacOptions ++= Seq("-feature")
我是Scala新手,所以可能导入不正确?我有:

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import scala.io.Source

java.lang.NoSuchMethodError
通常表示编译代码所依据的版本高于运行时使用的库的版本

对于Spark,这意味着用于编译的Spark版本与(在计算机或集群上)部署的版本不同


在开发和运行时之间调整版本应该可以解决这个问题。

在将一个简单的单行json文件读入数据帧并使用.show()方法显示它时,我遇到了同样的问题。我会在myDF.show()代码行中得到这个错误

对我来说,它在构建中被证明是错误的spark sql库版本

i、 e.我的外部图书馆中有SBT提供的,而不是

将以下行添加到my build.sbt解决了此问题

libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.0"

如果更新一个spark依赖项的版本,最安全的做法是将它们全部更新到相同的版本

您的spark编译版本和运行时版本不匹配。这是相当旧的spark版本。试着用一个更新一点的。如前所述,spark的运行时版本和编译时版本不匹配。@maasg我将编译时版本和运行时版本更改为匹配,一切正常。你能把这个作为答案让我接受吗?