MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Lecture de l'énorme collection MongoDB de Spark avec l'aide de Worker

Il existe deux façons d'obtenir les données de MongoDB vers Apache Spark.

Méthode 1 :Utilisation de Casbah (couche sur le pilote Java MongDB)

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")

Ici, nous utilisons Scala et Casbah pour obtenir d'abord les données, puis les enregistrer sur HDFS.

Méthode 2 :Spark Worker à notre usage

Meilleure version du code :Utilisation de Spark Worker et de plusieurs cœurs à utiliser pour obtenir les données en peu de temps.

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")