我想在火花计算后将rdd结果保存到mongodb。
我发现有两种方法可以做到这一点:
使用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)
或者我可以定义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)
}
}
我发现这两种方式都可以完成这项工作。但是我应该使用哪个以及为什么?