Искровая наивная Байесовская модель — нет такой ошибки метода

#apache-spark #naivebayes

#apache-spark #наивный Байес

Вопрос:

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

 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)
  

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

Запуск Spark 2.0.1 и Scala 2.11.8.

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

Комментарии:

1. почему вы используете разные версии для spark core и spark mllib?

Ответ №1:

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

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

Комментарии:

1. изменение версии spark-mllib на 2.11 решило проблему. Спасибо.