2016-10-17 55 views
0

我想將火花數據幀數據寫入到couchbase中。爲此,我試圖做到這一點如下: -將火花數據幀保存到couchbase中

double[] val=new double[3]; 
SparkContext sc = new SparkContext(new SparkConf().setAppName("sql").setMaster("local").set("com.couchbase.nodes", "url_of_couchbase").set("com.couchbase.bucket.bucket_name", "password")); 
SQLContext sql = new SQLContext(sc); 
DataFrame df = sql.read().json("sample.json"); 
df.registerTempTable("sample"); 

DataFrame men=sql.sql("select mean(imp_recall_interval) from sample"); 
Row[] r=men.collect(); 
val[0]=Double.parseDouble(r[0].toString().replace("[", "").replace("]", "").trim()); 
JsonDocument doc1=JsonDocument.create("docId", JsonObject.create().put("mean", val[0])); 
System.out.println("Data Saved"); 
JsonArrayDocument jrd=JsonArrayDocument.create("imp_recall_timeinterval_mean_median_sd", JsonArray.from("more", "content", "in", "here")); 

但是,當我嘗試平行這些,我不能這樣做。

sc.parrallelize(Seq(doc1,jrd)); 

請告訴我如何將這些數據保存到couchbase。或者請指定其他方法,我也可以創建一個創建並將文檔保存在Couchbase中

回答

0

試試這個。

import java.util.ArrayList; 
import java.util.List; 
import com.couchbase.spark.japi.CouchbaseDocumentRDD; 
import com.couchbase.client.java.document.AbstractDocument; 


JavaSparkContext jsc = new JavaSparkContext(sc); 
SQLContext sql = new SQLContext(jsc); 

JsonDocument doc1; 
JsonArrayDocument jrd; 

List<AbstractDocument> list = new ArrayList<AbstractDocument>(); 
list.add(doc1); 
list.add(jrd); 

JavaRDD<AbstractDocument> jRDD = jsc.parallelize(list); 
CouchbaseDocumentRDD<AbstractDocument> cbRDD = CouchbaseDocumentRDD.couchbaseDocumentRDD(jRDD); 
cbRDD.saveToCouchbase(); 
+0

List是什麼意思。 –

+0

因爲list.add();功能不起作用。 –

+0

在上面的答案中添加了導入。 – abaghel