Saya rasa tidak ada kueri yang "benar" - Anda perlu membuat kueri berdasarkan data yang ingin Anda proses
Saya mengalami masalah yang sama.
Saya percaya bahwa newAPIHadoopRDD, mengingat kelas MongoInputSplit., tidak memperhitungkan kueri saat menghitung pemisahan. Ini hanya diterapkan setelah pembagian dihitung. Ini berarti bahwa tidak peduli seberapa ramping kueri Anda, jumlah pemisahan akan tetap sama, dan akan sebanding dengan ukuran koleksi.
newAPIHadoopRDD menggunakan StandaloneMongoSplitter. Perhatikan bahwa kelas ini tidak menggunakan kueri untuk menghitung batas pemisah. Itu hanya menggunakan perintah "splitVector" internal mongo; dari dokumentasi di sini - http://api.mongodb.org/internal/current/ perintah.html , sepertinya juga tidak memperhitungkan kueri.
Saya tidak punya solusi yang baik sekalipun. Pendekatan yang lebih baik akan membagi koleksi mongo hanya setelah menghitung kueri, tetapi ini membutuhkan implementasi lain dari splitter. Berikut beberapa bacaan bagus tentang masalah ini:http:// www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/