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我将编译时版本和运行时版本更改为匹配,一切正常。你能把这个作为答案让我接受吗?