4

現在 Mongo の Map/Reduce フレームワークを使用しているプロセスがありますが、あまりうまく機能していません。これは非常に単純な集計で、3 つのフィールドをバケット化し、4 つの異なるフィールドの合計を返し、別の 4 つのフィールド (各バケット内で定数) の値を渡します。

[ MongoDb 2.2、2.4、および 2.6 での Map-Reduce のパフォーマンス] に記載されている理由により、パフォーマンスを向上させるためにこれを集計フレームワークに変換したいと考えていますが、次の 3 つのことが妨げになっていると思います。

  1. 結果内の 1 つのドキュメントが非常に小さい場合でも、合計結果が大きくなり、Mongo の 16 MB の制限を超える可能性があります。
  2. 別のコレクションに直接マップ/リデュースできますが、集計フレームワークは結果をインラインでしか返すことができません (だと思いますか?)
  3. より多くのデータがソース コレクションに到着したときの増分更新の場合、MapReduceCommand.OutputType(Java で) を に設定してmap/reduce できますREDUCEが、ユース ケースと完全に一致しますが、集約フレームワークに対応する機能がありません。

集計フレームワークでこれらを解決する良い方法はありますか? 現在、サーバーのバージョンは 2.4.3 です。新しい機能があれば、必要に応じて更新できます。

4

2 に答える 2

1

集約フレームワークは現在、別のコレクションに直接出力できません。ただし、このディスカッションで答えを試すことができます: SO-questions-output aggregate to new collection mapreduce はかなり遅く、私も解決策を待っていました。mongodb Web サイトでサポートされている Hadoop から Mongodb へのコネクタを試すことができます。mapreduce では Hadoop の方が高速です。しかし、それがあなたの特定のケースに適しているかどうかはわかりません。

Hadoop + MongoDB コネクタへのリンク

ではごきげんよう。

于 2013-06-20T16:11:35.970 に答える