Не мисля, че има "правилна" заявка - трябва да направите заявка въз основа на данните, които искате да обработите
Срещнах същия проблем.
Вярвам, че newAPIHadoopRDD, предвид MongoInputSplit.class, не отчита заявката при изчисляване на разделянията. Прилага се само след като се изчислят разделянията. Това означава, че колкото и щадна да е вашата заявка, броят на разделянията ще остане същият и ще бъде пропорционален на размера на колекцията.
newAPIHadoopRDD използва StandaloneMongoSplitter. Обърнете внимание, че този клас не използва заявката за изчисляване на границите на разделяне. Той просто използва вътрешната команда "splitVector" на mongo; от документацията тук - http://api.mongodb.org/internal/current/ commands.html , също изглежда, че не отчита заявката.
Все пак нямам добро решение. По-добър подход би разделил колекцията mongo само след изчисляване на заявката, но това изисква друга реализация на сплитера. Ето малко добро четиво за проблема:http:// www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/