1

我正在尝试 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

最奇怪的部分是,如果我使用与上述相同的语法格式为输入表配置本地 mongo db 集合和为输出表配置远程 mongo db 集合,则示例工作正常。

对此有何建议?

4

1 回答 1

2

拆分非分片集合需要 splitVector 命令,并且需要管理员凭据。

有几个解决方案:

  • 如果集合很小并且您可以在没有多个拆分的并行性的情况下进行处理,您可以通过将 mongo.input.split.create_input_splits 设置为 false 来关闭输入拆分并在单个拆分中一次处理整个集合。
  • 如果您可以对集合进行分片,则分片上的块范围将用作拆分边界。然后不再需要 splitVector 命令,所需的只是对块集合的读取权限。
于 2013-06-04T18:57:56.447 回答