2016-11-09 4 views
0

Попытка подключения Apache Mahout к Mongo DB. Однако, когда я запускаю его, я получаю следующую ошибку. Не уверен, что случилось. Я также удостоверился, что соединяется библиотека MongoClient.Ошибка подключения MongoDB и Apache Mahout

Ошибка:

java.lang.NoSuchMethodError: com.mongodb.DBCollection.ensureIndex(Lcom/mongodb/DBObject;)V 

    at org.apache.mahout.cf.taste.impl.model.mongodb.MongoDBDataModel.buildModel(MongoDBDataModel.java:559) 
    at org.apache.mahout.cf.taste.impl.model.mongodb.MongoDBDataModel.<init>(MongoDBDataModel.java:243) 
    at util.Connection.connectToServer(Connection.java:23) 

Метод:

public MongoDatabase connectToServer() throws MongoSocketException, UnknownHostException { 


     //Working 
     MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017"); 

      MongoClient mongoDB = new MongoClient(uri); 
      MongoDatabase mongoConnection = mongoDB.getDatabase("loka"); 

     //Throws Error 
      MongoDBDataModel dbm = new MongoDBDataModel("127.0.0.1",27017,"loka","BEACON_LOOKUP",true,false,null); 

      return mongoConnection; 
    } 

POM зависимости:

<dependency> 
      <groupId>org.mongodb</groupId> 
      <artifactId>mongodb-driver</artifactId> 
      <version>3.0.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.mahout</groupId> 
      <artifactId>mahout-core</artifactId> 
      <version>0.9</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.mahout</groupId> 
      <artifactId>mahout-math</artifactId> 
      <version>0.12.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.mahout</groupId> 
      <artifactId>mahout-collections</artifactId> 
      <version>1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.mahout</groupId> 
      <artifactId>mahout-integration</artifactId> 
      <version>0.12.2</version> 
     </dependency> 

ответ

1

Я не эксперт Mahout ни Java. Но сообщение об ошибке выглядит так, будто вы используете несовместимую версию Java-драйвера MongoDB.

Обратите внимание, что есть 2 ветви MongoDB Java Driver:

  1. 2.x поддерживает старый драйвер от ранее.
  2. Для поддержки async и новых функций MongoDB существует ветвь 3.x.

Ветка 3.x не совместима в обратном порядке. Например, такие методы, как ensureIndex, изменены на createIndex. Есть и другие изменения. Итак, вернемся к вашему вопросу, я думаю, вам стоит попробовать последнюю ветвь 2.x, которая сейчас равна 2.14.

Чтобы проверить совместимость между Java Driver и версией MongoDB, прочитайте document.

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