Jeg tror ikke, der er en "rigtig" forespørgsel - du skal forespørge baseret på de data, du gerne vil behandle
Jeg stødte på det samme problem.
Jeg mener, at newAPIHadoopRDD, givet MongoInputSplit.class, ikke tager højde for forespørgslen ved beregning af opdelingerne. Den anvendes først, efter at opdelingerne er beregnet. Det betyder, at uanset hvor tynd din forespørgsel er, vil antallet af opdelinger forblive det samme og vil være proportionalt med samlingens størrelse.
newAPIHadoopRDD bruger StandaloneMongoSplitter. Bemærk, at denne klasse ikke bruger forespørgslen til at beregne de opdelte grænser. Det bruger bare mongos interne "splitVector"-kommando; fra dokumentationen her - http://api.mongodb.org/internal/current/ commands.html , det ser også ud til, at det ikke tager højde for forespørgslen.
Jeg har dog ikke en god løsning. En bedre tilgang ville først opdele mongo-samlingen efter beregner forespørgslen, men dette kræver en anden implementering af splitteren. Her er noget godt at læse om problemet:http:// www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/