MongoDB连接失败了apache Storm - java

时间:2016-05-16 16:49:17

标签: java mongodb apache-storm

我的Apache Storm应用程序有问题,我是初学者。 特别是,当我尝试将一个螺栓连接到MongoDB后,在提交拓扑之后。 我有一个喷口发出随机值(只是为了测试)和一个螺栓将它们插入MongoDB中。问题是当喷口开始发出MongoDB-Bolt时执行失败。 我抓住了螺栓的这个异常运行时间:

java.lang.NoClassDefFoundError: com/mongodb/MongoClient at         bolts.MongoInsertBolt.prepare(MongoInsertBolt.java:29) at backtype.storm.daemon.executor$fn__5694$fn__5707.invoke(executor.clj:757) at backtype.storm.util$async_loop$fn__545.invoke(util.clj:477) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: com.mongodb.MongoClient at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) [...]

此问题仅在群集模式中持续。 在本地模式下,它可以很好地工作,我可以访问MongoDB,提交查询等。 这是我的螺栓实现。

提前致谢。

    private MongoClient mongoClient; 
    private  DBCollection table;

    public void prepare(Map stormConf, TopologyContext context,OutputCollector collector) {

    this.collector = collector;
    this.mongoClient = new MongoClient("xxx.yyy.zzz.www",27020);
    mongoClient.setWriteConcern(WriteConcern.SAFE);
    DB db = mongoClient.getDB("DB_Storm");
    this.table = db.getCollection("storm_netflow");

}

public void execute(Tuple input) {

    String netflow = input.getStringByField("netpack");
    BasicDBObject document = new BasicDBObject();
    document.put("id", netflow);
    this.table.insert(document);
    [...]
    this.mongoClient.close();
}

0 个答案:

没有答案