2017-08-12 3 views
0

私はSpark SQLアプリケーションをサーバー上で実行しています。それは.parquetファイルからデータを受け取り、各要求でそれらのデータに対してSQLクエリを実行します。私は応答のクエリの出力に対応するJSONを送信する必要があります。Spark SQLのデータセットからJSONを取得する(java)

これは、私はだから私は、クエリが動作することを

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

を知っていますか何です。

私はsqlDF.toJSON().collect()を返そうとしましたが、もう一方では[Ljava.lang.String;@1cd86ff9しか受け取りません。

JSONファイルとしてsqlDFを作成しようとしましたが、そのコンテンツをレスポンスに追加する方法がわからず、JSONファイルとは関係のないファイルの構造が保存されています。

アイデア/提案はありますか?

答えて

0
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); 
      } 
関連する問題