如何使用spark和mongohadoop连接器在mongo集合中保存数据?

uoifb46i  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(503)

我遵循了mongohadoop连接器的文档。
我可以从 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 数据库。
我怎样才能做到这一点?

idv4meu8

idv4meu81#

要在spark mongodb hadoop connector中使用查询,可以使用:

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

bqucvtff2#

都一样,只要把你的 BsonObject 变成一个 RDD[(Object,BsonObject)] (该对象可以是任何对象,null应该很好)并将其保存为对文档所做的操作

相关问题