簡體   English   中英

從Spark SQL中的數據集獲取JSON(java)

[英]Get a JSON from a Dataset in Spark SQL (java)

我有一個在服務器上運行的Spark SQL應用程序。 它從.parquet文件中獲取數據,並在每個請求中對這些數據執行SQL查詢。 我需要在響應中發送與查詢輸出相對應的JSON。

這就是我所做的

Dataset<Row> sqlDF = spark.sql(query);
sqlDF.show();

所以我知道查詢有效。

我嘗試返回sqlDF.toJSON().collect() ,但在另一端,我僅收到[Ljava.lang.String;@1cd86ff9

我嘗試將sqlDF作為JSON文件編寫,但是后來我不知道如何將其內容添加到響應中,並且它保存了與JSON文件無關的文件結構。

有任何想法/建議嗎?

You can return JSON String using the below code.
List<String> stringDataset = sqlDF.toJSON().collectAsList();
return stringDataset;

Jackson will return the JSON string in this case.

If you want to return proper JSONObject the you can use the below code :

List<Map<String,Object>> result= new ArrayList<>();
List<String> stringDataset = sqlDF.toJSON().collectAsList();
for(String s : stringDataset){
   Map<String,Object> map = new HashMap<>();
   map = mapper.readValue(s, new TypeReference<Map<String, String>>(){});
   result.add(map);
             }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM