sql >> Databáze >  >> NoSQL >> MongoDB

Čtení obrovské sbírky MongoDB od Spark s pomocí Worker

Existují dva způsoby, jak získat data z MongoDB do Apache Spark.

Metoda 1:Použití Casbah (vrstva na ovladači MongDB Java)

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

Zde používáme Scala a Casbah, abychom nejprve získali data a poté je uložili do HDFS.

Metoda 2:Spark Worker u nás

Lepší verze kódu:Použití Spark worker a vícejádrové použití k získání dat v krátkém čase.

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. Co je Redis pubsub a jak jej mohu používat?

  2. Meteor – chyba MongoDB:Nelze použít modifikátor $addToSet na non-array

  3. Kolekce Mongodb jako dynamická

  4. Mám pro každé připojení vytvořit nového klienta Redis?