MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Abfrage beim Verbinden von Mongodb mit Apache-Spark

Ich glaube nicht, dass es eine "richtige" Abfrage gibt - Sie müssen auf der Grundlage der Daten abfragen, die Sie verarbeiten möchten

Ich bin auf das gleiche Problem gestoßen.

Ich glaube, dass newAPIHadoopRDD angesichts der MongoInputSplit.class die Abfrage bei der Berechnung der Splits nicht berücksichtigt. Sie wird erst angewendet, nachdem die Splits berechnet wurden. Das bedeutet, dass, egal wie schlank Ihre Abfrage auch sein mag, die Anzahl der Aufteilungen gleich bleibt und proportional zur Größe der Sammlung ist.

newAPIHadoopRDD verwendet den eigenständigen MongoSplitter. Beachten Sie, dass diese Klasse die Abfrage nicht verwendet, um die Teilungsgrenzen zu berechnen. Es verwendet nur den internen "splitVector"-Befehl von Mongo; aus der Dokumentation hier - http://api.mongodb.org/internal/current/ Befehle.html , sieht es auch so aus, als würde es die Abfrage nicht berücksichtigen.

Eine gute Lösung habe ich allerdings nicht. Ein besserer Ansatz würde die Mongo-Sammlung erst nach aufteilen Berechnen der Abfrage, aber dies erfordert eine andere Implementierung des Splitters. Hier ist etwas Gutes zum Thema:http:// www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/