2016-09-08 74 views
0

我使用Spark SqlContext從postgres數據庫中檢索了數據。Spark SqlContext輸出JSON格式

下面是示例代碼:

 Class.forName(dbDriver); 

     Map<String, String> options = new HashMap<String, String>(); 
     options.put("url", dbUrl); 
     options.put("dbtable", dbTable); 
     options.put("driver", dbDriver); 

     SparkConf conf = new SparkConf().setAppName("JAVA_SPARK") 
       .setMaster("local[2]").set("spark.ui.port‌​", "7077"); 

     JavaSparkContext jsc = new JavaSparkContext(conf); 

     SQLContext sqlContext = new SQLContext(jsc); 

     DataFrame dframe = sqlContext.read().format("jdbc") 
       .options(options).load(); 

     dframe.show(); 

我有以下的輸出:

+------+---+ 
| name|age| 
+------+---+ 
|abc | 20| 
|xyz | 4| 
+------+---+ 

我所要的輸出是JSON format.Is有什麼辦法可以這種格式轉換爲JSON還是比這個更具體的方法?

回答

0

如果您想將DF轉換爲json,那麼您可以使用以下內容。

JavaRDD<String> jsonRDD = dframe.toJSON().toJavaRDD();  
jsonRDD.foreach(data -> { 
     System.out.println(data); 
    }); 

如果你想將其保存爲JSON文件,然後使用

dframe.write().json("c:\\temp\\myfile.json"); 

如果你想獲得它的名單,然後調用取()或收集()。請參考Spark doc以瞭解何時使用這些方法。

List<String> mylist = jsonRDD.collect();   
+0

由於它worked.But如何以這種形式獲得輸出{「名」:「ABC」,「年齡」:「20」}有沒有辦法實現這一目標。 –

+0

你想用DF做什麼?你想把這個DF保存在json文件中嗎? – abaghel

+0

我想通過使用DF將檢索到的數據從JSON格式傳遞到前端。 –