2016-11-02 146 views
7

sbt package运行得很好,但​​后,我得到的错误:阿帕奇星火:java.lang.NoSuchMethodError .rddToPairRDDFunctions

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.spark.SparkContext$.rddToPairRDDFunctions(Lorg/apache/spark/rdd/RDD;Lscala/reflect/ClassTag;Lscala/reflect/ClassTag;Lscala/math/Ordering;)Lorg/apache/spark/rdd/PairRDDFunctions; at SmokeStack$.main(SmokeStack.scala:46) at SmokeStack.main(SmokeStack.scala) 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.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:736) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

这里是有问题的行:

val sigCounts = rowData.map(row => (row("Signature"), 1)).countByKey() 

rowData是RDD映射[字符串,字符串]。地图中的所有项目都存在“签名”键。

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

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

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.2.0" 
scalacOptions ++= Seq("-feature") 

我是新来的斯卡拉,所以也许进口是不正确的?我有:

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

你的编译和运行时版本不匹配。 – maasg

+0

这是相当旧的Spark版本。尝试使用一个更新的。如上所述 - 你的运行时和编译时间版本不匹配。 – JiriS

+0

@maasg我将编译和运行时Spark版本更改为匹配,并且一切正常。你可以把这个作为答案,我可以接受它吗? – BlackSheep

回答

10

java.lang.NoSuchMethodError往往是一个迹象表明,对代码进行编译的版本是上一个版本高于在运行时使用的库。

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

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

0

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

对我来说,它竟然是构建中的spark-sql库的错误版本。

也就是说,我在SBT的外部库中,而不是。

添加下面一行到我build.sbt解决问题的火花

libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.0" 
相关问题