如何使用带有mongo-hadoop连接器的spark在mongo集合中保存数据?

时间:2015-07-13 07:15:32

标签: mongodb scala hadoop apache-spark mongodb-query

我关注了mongo-hadoop连接器的documentation

我可以使用以下内容将inputCol集合中的数据传输到outputCol数据库中的testDB集合:

 Configuration mongodbConfig = new Configuration();
 mongodbConfig.set("mongo.job.input.format", "com.mongodb.hadoop.MongoInputFormat");

 mongodbConfig.set("mongo.input.uri", "mongodb://localhost:27017/testDB.inputCol");

 JavaSparkContext sc = new JavaSparkContext(sparkClient.sparkContext);

 JavaPairRDD<Object, BSONObject> documents = sc.newAPIHadoopRDD(
                mongodbConfig,            // Configuration
                MongoInputFormat.class,   // InputFormat: read from a live cluster.
                Object.class,             // Key class
                BSONObject.class          // Value class
            );


 Configuration outputConfig = new Configuration();
 outputConfig.set("mongo.output.format",
                         "com.mongodb.hadoop.MongoOutputFormat");
 outputConfig.set("mongo.output.uri",
                         "mongodb://localhost:27017/testDB.outputCol");

 documents.saveAsNewAPIHadoopFile(
                "file:///this-is-completely-unused",
                Object.class,
                BSONObject.class,
                MongoOutputFormat.class,
                outputConfig
            );

我想保存一份简单的文件说

{"_id":1, "name":"dev"}

outputCol数据库的testDB集合中。

我怎样才能实现这一目标?

2 个答案:

答案 0 :(得分:1)

要在Spark MongoDB Hadoop Connector中使用查询,您可以使用:

mongodbConfig.set("mongo.input.query","{'_id':1,'name':'dev'}")

答案 1 :(得分:0)

它是一样的,只需将你的BsonObject放入RDD[(Object,BsonObject)](该对象可以是任何东西,null应该没问题)并像保存文档一样保存它/ p>