sql >> Database >  >> NoSQL >> MongoDB

Enorme MongoDB-verzameling van Spark lezen met hulp van Worker

Er zijn twee manieren om de gegevens van MongoDB naar Apache Spark te krijgen.

Methode 1:Casbah gebruiken (laag op MongDB Java-stuurprogramma)

val uriRemote = MongoClientURI("mongodb://RemoteURL:27017/")
val mongoClientRemote =  MongoClient(uriRemote)
val dbRemote = mongoClientRemote("dbName")
val collectionRemote = dbRemote("collectionName")
val ipMongo = collectionRemote.find
val ipRDD = sc.makeRDD(ipMongo.toList)
ipRDD.saveAsTextFile("hdfs://path/to/hdfs")

Hier gebruiken we Scala en Casbah om eerst de gegevens op te halen en vervolgens op te slaan in HDFS.

Methode 2:Spark Worker bij ons

Betere versie van code:Spark-werker en meerdere kernen gebruiken om de gegevens in korte tijd te krijgen.

val config = new Configuration()
config.set("mongo.job.input.format","com.mongodb.hadoop.MongoInputFormat")
config.set("mongo.input.uri", "mongodb://RemoteURL:27017/dbName.collectionName")
val keyClassName = classOf[Object]
val valueClassName = classOf[BSONObject]
val inputFormatClassName = classOf[com.mongodb.hadoop.MongoInputFormat]
val ipRDD = sc.newAPIHadoopRDD(config,inputFormatClassName,keyClassName,valueClassName)
ipRDD.saveAsTextFile("hdfs://path/to/hdfs") 



  1. mongodb aantal verschillende waarden per veld/sleutel

  2. Mongo-interface

  3. Vraag op datum voor berichten die de afgelopen 24 uur zijn gemaakt

  4. Verander variabele waarde in document na enige tijd verstrijkt?