我正在尝试传递多个集合作为执行map reduce hadoop作业的输入。我发现版本1.2中的multicollectionsplitbuilder具有此功能。下面的示例发布在github中,但它不起作用,非常感谢您的帮助。
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);
Configuration conf = new Configuration();
conf.set(MultiMongoCollectionSplitter.MULTI_COLLECTION_CONF_KEY, mcsb.toJSON());
1条答案
按热度按时间jhiyze9q1#
谢谢你指出这个问题。这是示例中的一个错误。hadoop-109已经被归档来解决这个问题。
我通过将子拆分器类设置为
null
对于所有输入集合。查看此拉取请求。要使其正常工作,请确保将以下参数传递给hadoop:
上述修复是一种解决方法。给你更多关于这个问题的细节。根据设计,子拆分器类可以是除
MultiMongoCollectionSplitter
. 但是hadoop-110有一个bug阻止我们这么做。这个问题将很快在以后的版本中修复。