MongoDB和Apache Mahout连接错误

时间:2016-11-09 21:02:47

标签: java mongodb maven mahout mongodb-java

尝试将Apache Mahout连接到Mongo DB。但是,当我运行它时,我收到以下错误。不确定是什么问题。我还确保MongoClient库连接。

错误:

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 Dependancies:

<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 个答案:

答案 0 :(得分:1)

我不是Mahout和Java的专家。但是错误消息看起来像是在使用不兼容的MongoDB Java驱动程序版本。

请注意,MongoDB Java Driver有2个分支:

  1. 2.x维护以前的老司机。
  2. 支持异步和新的MongoDB功能,以及3.x分支。
  3. 3.x分支不向后兼容。例如,ensureIndex等方法更改为createIndex。还有许多其他变化。 回到你的问题,我认为你应该尝试最新的2.x分支,现在是2.14。

    要检查Java Driver和MongoDB版本之间的兼容性,请阅读document