Ik denk niet dat er een "juiste" zoekopdracht is - je moet een zoekopdracht uitvoeren op basis van de gegevens die je wilt verwerken
Ik kwam hetzelfde probleem tegen.
Ik geloof dat newAPIHadoopRDD, gezien de MongoInputSplit.class, geen rekening houdt met de query bij het berekenen van de splitsingen. Het wordt pas toegepast nadat de splitsingen zijn berekend. Dit betekent dat, hoe mager uw zoekopdracht ook is, het aantal splitsingen hetzelfde blijft en in verhouding staat tot de grootte van de verzameling.
newAPIHadoopRDD gebruikt de StandaloneMongoSplitter. Merk op dat deze klasse de query niet gebruikt om de splitsingsgrenzen te berekenen. Het gebruikt gewoon Mongo's interne "splitVector"-opdracht; uit de documentatie hier - http://api.mongodb.org/internal/current/ commands.html , het lijkt er ook op dat het geen rekening houdt met de zoekopdracht.
Ik heb echter geen goede oplossing. Een betere aanpak zou de mongo-verzameling pas na split splitsen het berekenen van de query, maar dit vereist een andere implementatie van de splitter. Hier is wat goed te lezen over het probleem:http:// www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/