2016-11-02 10 views
7

sbt packageの実行だけで罰金、しかし​​後、私はエラーを取得する:ここでApacheのスパーク: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ですMap [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 
+1

あなたのコンパイルとランタイムのバージョンが一致しない問題を解決しました。 – maasg

+0

これはかなり古いスパークバージョンです。少し新しいものを使用してみてください。上で述べたように、ランタイムとコンパイル時のバージョンのsparkは一致しません。 – JiriS

+0

@maasg私はコンパイルとランタイムSparkのバージョンを一致させて変更しました。私はそれを受け入れることができるように答えとしてこれを置くことができますか? – BlackSheep

答えて

10

java.lang.NoSuchMethodErrorは、多くの場合、コードがコンパイルされたバージョンに対しては、実行時に使用するライブラリよりも新しいバージョンであることを示しています。

Sparkでは、コンパイルに使用されたSparkのバージョンが、(マシンまたはクラスタ上の)展開されたバージョンと異なることを意味します。

開発とランタイム間のバージョンを調整することでこの問題を解決できます。

0

私は単純なoneline jsonファイルをデータフレームに読み込み、.show()メソッドを使用して同じ問題に直面していました。 myDF.show()のコード行でこのエラーが発生します。

私にとっては、ビルドでspark-sqlライブラリのバージョンが間違っていることが判明しました。

つまり、私はSBTから私の外部ライブラリにいました。

私build.sbtに次の行を追加するには、スパークの

libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.0" 
関連する問題