java的连接失败

mnemlml8  于 2021-06-21  发布在  Storm
关注(0)|答案(0)|浏览(177)

我的apachestorm应用程序有问题,我是个初学者。特别是,在提交拓扑之后,当我尝试将一个螺栓连接到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,提交查询等。这是我的bolt实现。
提前谢谢。

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();
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题