1

データに Map Reduce を適用するために Hadoop を試しています。このリンクのサンプルは、ローカル 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 に設定することで、入力分割をオフにして、1 つの分割でコレクション全体を一度に処理できます。
  • コレクションをシャード化できる場合、シャードのチャンク範囲が分割境界として使用されます。その後、splitVector コマンドは不要になり、必要なのはチャンク コレクションに対する読み取りアクセス許可だけです。
于 2013-06-04T18:57:56.447 に答える