Передача всех коллекций mongoDB в качестве входных данных для mapreduce hadoop
Мне нужно передать все коллекции моей базы данных в 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 сбора аргументов. Все, что мне нужно сделать, это получить все коллекции одним только методом картографирования. Мой Редуктор будет одинаковым для всех из них.
Любая помощь приветствуется.
1 ответ
Вы можете продолжить добавлять в MultiCollectionSplitBuilder
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
)
.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
)
;