MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come eseguire una query durante la connessione di mongodb con apache-spark

Non credo che ci sia una query "giusta":devi eseguire una query in base ai dati che desideri elaborare

Ho riscontrato lo stesso problema.

Credo che newAPIHadoopRDD, dato il MongoInputSplit.class, non tenga conto della query durante il calcolo delle divisioni. Viene applicato solo dopo aver calcolato le divisioni. Ciò significa che, indipendentemente da quanto snella possa essere la tua query, il numero di suddivisioni rimarrà lo stesso e sarà proporzionale alla dimensione della raccolta.

newAPIHadoopRDD utilizza StandaloneMongoSplitter. Si noti che questa classe non utilizza la query per calcolare i limiti di divisione. Sta solo usando il comando interno "splitVector" di mongo; dalla documentazione qui - http://api.mongodb.org/internal/current/ comandi.html , sembra anche che non tenga conto della query.

Non ho una buona soluzione però. Un approccio migliore dividerebbe la collezione mongo solo dopo calcolo della query, ma ciò richiede un'altra implementazione dello splitter. Ecco una buona lettura del problema:http:// www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/