我关注了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
集合中。
我怎样才能实现这一目标?
答案 0 :(得分:1)
要在Spark MongoDB Hadoop Connector中使用查询,您可以使用:
mongodbConfig.set("mongo.input.query","{'_id':1,'name':'dev'}")
答案 1 :(得分:0)
它是一样的,只需将你的BsonObject
放入RDD[(Object,BsonObject)]
(该对象可以是任何东西,null应该没问题)并像保存文档一样保存它/ p>