2015-07-13 69 views
2

我跟着mongo-hadoop連接器的documentation如何使用mongo-hadoop連接器使用spark來保存mongo集合中的數據?

我能夠將數據從inputCol收集testDB數據庫傳輸到outputCol收集利用:

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數據庫。

我該如何做到這一點?

回答

1

對於使用查詢在星火MongoDB中的Hadoop連接器,你可以使用:

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

它是相同的,只是把你的BsonObjectRDD[(Object,BsonObject)](即對象可以是任何東西,空應該是罰款),並將其保存爲你做了文件

相關問題