2016-10-18 6 views
1

Я новичок в Spark и пытаюсь запустить пример Naive Bayes Java в Eclipse. Это дает Нет такого метода Ошибка при попытке сохранить модель.Spark Naive Bayes Model - Нет такой ошибки метода

SparkConf sparkConf = new SparkConf().setAppName("JavaNaiveBayesExample").setMaster("local"); 
JavaSparkContext jsc = new JavaSparkContext(sparkConf); 

String path = "SPARK_HOME\\data\\mllib\\sample_libsvm_data.txt"; 
JavaRDD<LabeledPoint> inputData = MLUtils.loadLibSVMFile(jsc.sc(), path).toJavaRDD(); 
JavaRDD<LabeledPoint>[] tmp = inputData.randomSplit(new double[]{0.6, 0.4}); 
JavaRDD<LabeledPoint> training = tmp[0]; // training set 
JavaRDD<LabeledPoint> test = tmp[1]; // test set 
final NaiveBayesModel model = NaiveBayes.train(training.rdd(), 1.0); 
JavaPairRDD<Double, Double> predictionAndLabel = 
    test.mapToPair(new PairFunction<LabeledPoint, Double, Double>() { 
     public Tuple2<Double, Double> call(LabeledPoint p) { 
     return new Tuple2(model.predict(p.features()), p.label()); 
    } 
    }); 
double accuracy = predictionAndLabel.filter(new Function<Tuple2<Double, Double>, Boolean>() { 
    public Boolean call(Tuple2<Double, Double> pl) { 
    return pl._1().equals(pl._2()); 
    } 
}).count()/(double) test.count(); 

// Save and load model  
model.save(jsc.sc(), "PATH_TO_FOLDER\\myNaiveBayesModel"); 
NaiveBayesModel sameModel = NaiveBayesModel.load(jsc.sc(), "PATH_TO_FOLDER\\myNaiveBayesModel"); 

jsc.close(); 

Ошибка возникает в model.save() линии.

Трассировка стека, как показано ниже:

Exception in thread "main" java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaMirrors$JavaMirror; 
at org.apache.spark.mllib.classification.NaiveBayesModel$SaveLoadV2_0$.save(NaiveBayes.scala:205) 
at org.apache.spark.mllib.classification.NaiveBayesModel.save(NaiveBayes.scala:170) 
at AppMain.main(AppMain.java:42) 

Как я могу решить эту проблему? Любая помощь приветствуется.

Running Spark 2.0.1 и Scala 2.11.8.

Зависимости, добавленные для spark-core_2.11 и spark-mllib_2.10.

+2

Почему вы используете разные версии для искрового сердечника и искры mllib? –

ответ

2

Зависимости, добавленные для spark-core_2.11 и spark-mllib_2.10.

Пожалуйста, используйте искру mllib, скомпилированный с помощью Scala 2.11, чтобы решить проблему.

+0

замена версии искромера-mllib на 2.11 решена. Благодарю. – Fleur

Смежные вопросы