gpt4 book ai didi

java - 如何在 Spark 中在 JSONArray 上应用 flatmap 并转换为 JSONObject?

转载 作者:行者123 更新时间:2023-11-30 01:45:37 25 4
gpt4 key购买 nike

我正在开发 Spark Java 模块,我在其中制作了一个地理编码 api(100 条记录的批量请求)。现在,对于每个请求,我都会在一行中获取 JSONObject 的 JSONArray,如下所示。

通常会有100个地址,但我只给出了2个地址

  Locations        | Batch_Address
------------------------------------------
Address1,Address2 | [ { name:Address1,lat:12.89,lng:23.56} , { name:Address2,lat:12.3,lng:23.4} ]

我需要的是如下结果

Address
----------
{ name:Address1,lat:12.89,lng:23.56}
{ name:Address2,lat:12.3,lng:23.4}

最佳答案

如果您的代码涉及 java8,其中有 java.util.Spliterator<T> ,因此您可以使用它从 jsonarray 创建列表。

字符串类型

JavaRDD<String> JsonObject = json_Batch.javaRDD().flatMap(f -> {
String res = f.getAs("Batch_Address").toString();


JSONArray jsonArr = new JSONArray(res);


List<String> list = StreamSupport.stream(jsonArr.spliterator(), false)
.map(val -> val.toString())

.collect(Collectors.toCollection( ArrayList::new ));

return list.iterator();

});

JsonObject.foreach(f -> System.out.println(f));



JSONObject 类型


JavaRDD<JSONObject> JsonObject = json_Batch.javaRDD().flatMap(f -> {
String res = f.getAs("Batch_Address").toString();


JSONArray jsonArr = new JSONArray(res);


List<JSONObject> list = StreamSupport.stream(jsonArr.spliterator(), false)
.map(val -> (JSONObject) val)

.collect(Collectors.toCollection( ArrayList::new ));

return list.iterator();

});

JsonObject.foreach(f -> System.out.println(f));


关于java - 如何在 Spark 中在 JSONArray 上应用 flatmap 并转换为 JSONObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58120089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com