我正在试用hadoop在我的数据中应用map reduce,当我正确配置本地mongo集合时,这个链接中的示例可以正常工作 mongo.input.uri
.
但是当我配置一个远程mongo集合时,如下所示,
<property>
<name>mongo.input.uri</name>
<value>mongodb://username:password@remote_mongodb_ip:27017/input_collection</value>
</property>
我得到下面的错误
java.lang.IllegalArgumentException: Unable to calculate input splits: need to login
最奇怪的是,如果我使用上述相同的语法格式为input table配置local mongo db collection,为output table配置remote mongo db collection,那么这个示例就可以正常工作。
有什么建议吗?
1条答案
按热度按时间gblwokeq1#
拆分非分片集合需要splitvector命令,并且需要管理员凭据。
有几种解决方案:
如果集合很小,并且您可以在没有多个拆分的并行性的情况下进行处理,则可以通过将mongo.input.split.create\u input\u splits设置为false,关闭输入拆分并在单个拆分中一次性处理整个集合。
如果可以分割集合,则碎片上的块范围将用作分割边界。这样就不再需要splitvector命令,只需要对chunks集合有读取权限。