使用rdd.saveAsNewAPIHadoop和使用spark明确保存之间的区别是什么

时间:2016-08-23 13:13:28

标签: mongodb scala apache-spark

我想在火花计算后将rdd结果保存到mongodb。

我发现有两种方法可以做到这一点:

  1. 使用rdd.saveAsNewAPIHadoopFile

    val outputConfig = new Configuration()
    outputConfig.set("mongo.output.uri", "mongodb://mongodb.host.ip:27017/dbName.dbcName")
    outRDD.saveAsNewAPIHadoopFile("foo",
      classOf[Object],
      classOf[BSONObject],
      classOf[MongoOutputFormat[Object, BSONObject]],
      outputConfig)
    
  2. 或者我可以定义DBCollection实例并通过foreach保存rdd

     val DBC = new MongoClient("mongodb.host.ip").getDB("dbName").getCollection("dbcName")
     rdd.foreach{
        case (id, data) => {
           val dbo = new BasicDBObject()
           ...code that build the dbObject...
           DBC.save(dbo)
        }
     }
    
  3. 我发现这两种方式都可以完成这项工作。但是我应该使用哪个以及为什么?

0 个答案:

没有答案