sql >> データベース >  >> NoSQL >> MongoDB

mongodbをapache-sparkに接続するときにクエリを実行する方法

    「正しい」クエリはないと思います。処理するデータに基づいてクエリを実行する必要があります

    同じ問題が発生しました。

    MongoInputSplit.classを指定すると、newAPIHadoopRDDは、分割を計算するときにクエリを考慮しないと思います。分割が計算された後にのみ適用されます。これは、クエリがどれほど無駄がなくても、分割の数は同じままであり、コレクションのサイズに比例することを意味します。

    newAPIHadoopRDDはStandaloneMongoSplitterを使用しています。このクラスは、分割境界の計算にクエリを使用していないことに注意してください。これは、mongoの内部「splitVector」コマンドを使用しているだけです。こちらのドキュメントから- http://api.mongodb.org/internal/current/ Commands.html 、クエリを考慮していないようにも見えます。

    しかし、私には良い解決策がありません。より良いアプローチは、mongoコレクションをにのみ分割することです。 クエリを計算しますが、これにはスプリッターの別の実装が必要です。この問題に関するいくつかの良い読み物は次のとおりです。 http:// www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/




    1. マングースでObjectIdを適切にキャストする方法

    2. フィールド名のないmongodbクエリ

    3. MongoDBセキュリティの3つのA–認証、承認、監査

    4. Hadoopの仕組み–Hadoopの仕組みを理解する