2017-04-02 3 views
0

ここではエラーである:ここでは

Exception in thread "main" java.lang.NoSuchMethodError: breeze.linalg.Vector$.scalarOf()Lbreeze/linalg/support/ScalarOf; 
at org.apache.spark.ml.knn.Leaf$$anonfun$4.apply(MetricTree.scala:95) 
at org.apache.spark.ml.knn.Leaf$$anonfun$4.apply(MetricTree.scala:93) 
at scala.collection.IndexedSeqOptimized$class.foldl(IndexedSeqOptimized.scala:57) 
at scala.collection.IndexedSeqOptimized$class.foldLeft(IndexedSeqOptimized.scala:66) 
at scala.collection.mutable.ArrayBuffer.foldLeft(ArrayBuffer.scala:48) 
at org.apache.spark.ml.knn.Leaf$.apply(MetricTree.scala:93) 
at org.apache.spark.ml.knn.MetricTree$.build(MetricTree.scala:169) 
at org.apache.spark.ml.knn.KNN.fit(KNN.scala:388) 
at org.apache.spark.ml.classification.KNNClassifier.train(KNNClassifier.scala:109) 
at org.apache.spark.ml.classification.KNNClassifier.fit(KNNClassifier.scala:117) 
at SparkKNN$.main(SparkKNN.scala:23) 
at SparkKNN.main(SparkKNN.scala) 

はエラーをトリガされたプログラムであり、 :

object SparkKNN { 
    def main(args: Array[String]) { 
     val spark = SparkSession.builder().master("local").config("spark.sql.warehouse.dir", "file:///c:/tmp/spark-warehouse").getOrCreate() 
     val sc = spark.sparkContext 
     import spark.implicits._ 
     //read in raw label and features 
     val training = spark.read.format("com.databricks.spark.csv").option("header", true).load("E:/Machine Learning/knn_input.csv") 
     var df = training.selectExpr("cast(label as double) label", "cast(feature1 as int) feature1","cast(feature2 as int) feature2","cast(feature3 as int) feature3") 
     val assembler = new VectorAssembler().setInputCols(Array("feature1","feature2","feature3")).setOutputCol("features") 
     df = assembler.transform(df) 
     //MLUtils.loadLibSVMFile(sc, "C:/Program Files (x86)/spark-2.0.0-bin-hadoop2.7/data/mllib/sample_libsvm_data.txt").toDF() 

     val knn = new KNNClassifier() 
      .setTopTreeSize(df.count().toInt/2) 
      .setK(10) 
     val splits = df.randomSplit(Array(0.7, 0.3)) 
     val (trainingData, testData) = (splits(0), splits(1)) 
     val knnModel = knn.fit(trainingData) 

     val predicted = knnModel.transform(testData) 
     predicted.show() 
    } 
} 

私は、scalaバージョン2.11.8でApache spark 2.0を使用しています。バージョンの違いのように見えます。何か案は?

答えて

0
MLLib 2.0はブリーズのこのバージョンにもたらします

スパーク:あなたはまた、はブリーズが異なるバージョンに依存していることを、あなたのクラスパスに別のライブラリを持っている必要があります

"org.scalanlp" % "breeze_2.11" % "0.11.2"

、それがされて一つですロードされる。結果として、MLLibは、実行時にコンパイル時と異なるバージョンのBreezeで動作しています。

あなたは複数のオプションがあります。 Breezeへの望ましくない推移依存を検出して除外することができます。同一のBreeze依存関係MLLibを持つライブラリのバージョンに直接依存関係を追加できます。また、BreezeのMLLibのニーズに直接依存することもできます。

+0

RE:2.1 スパークMLIBは、風に依存0.12 https://github.com/apache/spark/blob/v2.1.0/pom.xml#L655-L671 –

+0

OPは2.0を使用しています。スパークのアップグレードが問題を解決すると言っていますか? – Vidya

関連する問題