MongoDB 和 Apache Mahout 连接错误
MongoDB and Apache Mahout Connection Error
正在尝试将 Apache Mahout 连接到 Mongo 数据库。但是,当我 运行 它时,出现以下错误。不确定出了什么问题。我还确保 MongoClient Library 已连接。
错误:
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>
我不是 Mahout 专家,也不是 Java。但是错误消息确实看起来您使用的是 MongoDB Java Driver.
的不兼容版本
注意MongoDB有2个分支 Java Driver:
- 2.x 保持以前的旧 driver。
- 为了支持异步和新的 MongoDB 功能,有 3.x 分支。
3.x 分支不向后兼容。例如 ensureIndex
等方法更改为 createIndex
。还有许多其他变化。
回到你的问题,我认为你应该尝试最新的 2.x 分支,现在是 2.14。
要检查 Java Driver 和 MongoDB 版本之间的兼容性,请阅读 document。
正在尝试将 Apache Mahout 连接到 Mongo 数据库。但是,当我 运行 它时,出现以下错误。不确定出了什么问题。我还确保 MongoClient Library 已连接。
错误:
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>
我不是 Mahout 专家,也不是 Java。但是错误消息确实看起来您使用的是 MongoDB Java Driver.
的不兼容版本注意MongoDB有2个分支 Java Driver:
- 2.x 保持以前的旧 driver。
- 为了支持异步和新的 MongoDB 功能,有 3.x 分支。
3.x 分支不向后兼容。例如 ensureIndex
等方法更改为 createIndex
。还有许多其他变化。
回到你的问题,我认为你应该尝试最新的 2.x 分支,现在是 2.14。
要检查 Java Driver 和 MongoDB 版本之间的兼容性,请阅读 document。