Nemyslím si, že existuje „správný“ dotaz – musíte se dotazovat na základě dat, která byste chtěli zpracovat
Setkal jsem se se stejným problémem.
Domnívám se, že newAPIHadoopRDD, vzhledem k třídě MongoInputSplit.class, nezohledňuje dotaz při výpočtu rozdělení. Použije se až po výpočtu rozdělení. To znamená, že bez ohledu na to, jak štíhlý může být váš dotaz, počet rozdělení zůstane stejný a bude úměrný velikosti kolekce.
newAPIHadoopRDD používá StandaloneMongoSplitter. Všimněte si, že tato třída nepoužívá dotaz k výpočtu hranic rozdělení. Pouze používá mongoův interní příkaz "splitVector"; z dokumentace zde - http://api.mongodb.org/internal/current/ commands.html , také to vypadá, že nepočítá s dotazem.
Nemám ale dobré řešení. Lepší přístup by rozdělil kolekci mongo až po výpočet dotazu, ale to vyžaduje jinou implementaci rozdělovače. Zde je dobré čtení o problému:http:// www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/