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

Sådan spørger du, når du forbinder mongodb med apache-spark

Jeg tror ikke, der er en "rigtig" forespørgsel - du skal forespørge baseret på de data, du gerne vil behandle

Jeg stødte på det samme problem.

Jeg mener, at newAPIHadoopRDD, givet MongoInputSplit.class, ikke tager højde for forespørgslen ved beregning af opdelingerne. Den anvendes først, efter at opdelingerne er beregnet. Det betyder, at uanset hvor tynd din forespørgsel er, vil antallet af opdelinger forblive det samme og vil være proportionalt med samlingens størrelse.

newAPIHadoopRDD bruger StandaloneMongoSplitter. Bemærk, at denne klasse ikke bruger forespørgslen til at beregne de opdelte grænser. Det bruger bare mongos interne "splitVector"-kommando; fra dokumentationen her - http://api.mongodb.org/internal/current/ commands.html , det ser også ud til, at det ikke tager højde for forespørgslen.

Jeg har dog ikke en god løsning. En bedre tilgang ville først opdele mongo-samlingen efter beregner forespørgslen, men dette kræver en anden implementering af splitteren. Her er noget godt at læse om problemet:http:// www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/




  1. Blanding af PostgreSQL og MongoDB (som Django-backends)

  2. Redis liste over indlejrede nøgler

  3. Faktorer at overveje, når du vælger MongoDB til Big Data-applikationer

  4. Udfør MongoTemplate.aggregate uden rækkehentning