我需要将 MongoDB 中的所有数据库集合作为 Hadoop MR 作业的输入。有一种方法允许多输入:
MultiCollectionSplitBuilder mcsb = new MultiCollectionSplitBuilder();
mcsb.add(new MongoURI("mongodb://localhost:27017/mongo_hadoop.yield_historical.in"),
(MongoURI)null, // authuri
true, // notimeout
(DBObject)null, // fields
(DBObject)null, // sort
(DBObject)null, // query
false,
MultiMongoCollectionSplitter.class)
.add(new MongoURI("mongodb://localhost:27017/mongo_hadoop.yield_historical.in"),
(MongoURI)null, // authuri
true, // notimeout
(DBObject)null, // fields
(DBObject)null, // sort
new BasicDBObject("_id", new BasicDBObject("$gt", new Date(883440000000L))),
false, // range query
MultiMongoCollectionSplitter.class);
但我的数据库中有大约 10 个集合。上述方法只允许 2 个集合争论。我需要做的就是仅在 mapper 方法中获取所有集合。我的 Reducer 对它们都是一样的。
任何帮助表示赞赏。