sql >> データベース >  >> NoSQL >> MongoDB

ワーカーの助けを借りてSparkから巨大なMongoDBコレクションを読む

    MongoDBからApacheSparkにデータを取得する方法は2つあります。

    方法1:Casbah(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")
    

    ここでは、ScalaとCasbahを使用して最初にデータを取得し、次にそれをHDFSに保存しています。

    方法2:使用中のSparkワーカー

    コードのより良いバージョン:Sparkワーカーとマルチコアを使用してデータを短時間で取得するために使用します。

    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. Redis一括挿入

    2. $pushはmongoのマップに相当します

    3. MongoDB:それぞれの異なる値がいくつあるかを数えますか?

    4. メッセージを待っているHiredis