从Spark SQL(java)中的数据集中获取JSON



我有一个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);
}

最新更新