java - MongoDB 和 Apache Mahout 连接错误

标签 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 依赖项:

<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 驱动程序。

请注意,MongoDB Java 驱动程序有 2 个分支:

  1. 2.x 保留了之前的旧驱动程序。
  2. 为了支持异步和新的 MongoDB 功能,我们推出了 3.x 分支。

3.x 分支不向后兼容。例如,ensureIndex 等方法更改为 createIndex。还有很多其他变化。 回到你的问题,我认为你应该尝试最新的 2.x 分支,现在是 2.14。

要检查 Java 驱动程序和 MongoDB 版本之间的兼容性,请阅读 document .

关于java - MongoDB 和 Apache Mahout 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40515971/

相关文章:

java - 尝试从 maven 运行 java 程序时出现异常

java - Maven 表示现在存在依赖关系,尽管它确实存在

java - 如何将 java 代理附加到正在运行的 spring-boot 应用程序

java - 是否可以创建在单个操作中计算其元素的 Stream 实现

java - List 是将日期与假期集合进行比较的最佳集合方法吗?

mongodb:limit() 会提高查询速度吗?

ruby-on-rails - RubyMine 上的 MongoDB 支持

java - 如何以 log4j2 xml 格式配置日志文件路径到当前工作目标目录

java - spring data save iterable方法是否使用批量操作并按相同顺序返回结果?

mongodb - Mongo 如何使用 DBRef 进行 $lookup