「正しい」クエリはないと思います。処理するデータに基づいてクエリを実行する必要があります
同じ問題が発生しました。
MongoInputSplit.classを指定すると、newAPIHadoopRDDは、分割を計算するときにクエリを考慮しないと思います。分割が計算された後にのみ適用されます。これは、クエリがどれほど無駄がなくても、分割の数は同じままであり、コレクションのサイズに比例することを意味します。
newAPIHadoopRDDはStandaloneMongoSplitterを使用しています。このクラスは、分割境界の計算にクエリを使用していないことに注意してください。これは、mongoの内部「splitVector」コマンドを使用しているだけです。こちらのドキュメントから-
しかし、私には良い解決策がありません。より良いアプローチは、mongoコレクションを後にのみ分割することです。 クエリを計算しますが、これにはスプリッターの別の実装が必要です。この問題に関するいくつかの良い読み物は次のとおりです。