sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man frågar när man ansluter mongodb med apache-spark

Jag tror inte att det finns en "rätt" fråga - du måste fråga baserat på den data du vill bearbeta

Jag stötte på samma problem.

Jag tror att newAPIHadoopRDD, givet MongoInputSplit.class, inte tar hänsyn till frågan vid beräkning av delningarna. Den tillämpas först efter att delningarna har beräknats. Det betyder att oavsett hur smal din fråga är, kommer antalet delningar att förbli detsamma och kommer att vara proportionell mot storleken på samlingen.

newAPIHadoopRDD använder StandaloneMongoSplitter. Observera att den här klassen inte använder frågan för att beräkna de delade gränserna. Det är bara att använda mongos interna "splitVector"-kommando; från dokumentationen här - http://api.mongodb.org/internal/current/ commands.html , det verkar också som att det inte tar hänsyn till frågan.

Jag har dock ingen bra lösning. Ett bättre tillvägagångssätt skulle dela upp mongosamlingen först efter beräknar frågan, men detta kräver en annan implementering av splittern. Här är lite bra läsning om problemet:http:// www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/




  1. Kan jag ansöka om Every in aggregerad fråga i MongoDB?

  2. Är det möjligt att definiera nyckeln när man infogar i mongodb

  3. Iterera över hela Mongo-databasen

  4. Bild som returneras från REST API visas alltid trasig