Java 如何读取聚合的嵌套JSON?
我是新手。 我所要做的就是读取嵌套的JSON并根据特定条件对它们进行分组。 例如:如果json包含一个人的详细信息,比如他的城市和zipcode。我想把属于同一个城市和zipcode的人分组 我一直在进步,直到将JSON读入数据集。 但我不知道如何将它们分组 我的嵌套JSON格式是Java 如何读取聚合的嵌套JSON?,java,json,apache-spark,apache-spark-sql,Java,Json,Apache Spark,Apache Spark Sql,我是新手。 我所要做的就是读取嵌套的JSON并根据特定条件对它们进行分组。 例如:如果json包含一个人的详细信息,比如他的城市和zipcode。我想把属于同一个城市和zipcode的人分组 我一直在进步,直到将JSON读入数据集。 但我不知道如何将它们分组 我的嵌套JSON格式是 { "entity": { "name": "SJ", "id": 31 }, "hierarchy": { "state": "TN", "city": "CBE"
{
"entity": {
"name": "SJ",
"id": 31
},
"hierarchy": {
"state": "TN",
"city": "CBE"
},
"data": {}}
这是我为从文件中读取嵌套json而编写的代码
public void groupJsonString(SparkSession spark) {
Dataset<Row> studentRecordDS = spark.read()
.option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ")
.json("/home/shiney/Documents/NGA/sparkJsonFiles/*.json");
StructType st = studentRecordDS.schema();
List<StructType> nestedList = new ArrayList<>();
for(StructField field : st.fields()) {
nestedList.add((StructType)field.dataType());
}
}
public void groupJsonString(SparkSession spark){
Dataset studentRecordDS=spark.read()
.选项(“时间戳格式”,“yyyy/MM/dd HH:MM:ss ZZ”)
.json(“/home/shiney/Documents/NGA/sparkJsonFiles/*.json”);
StructType st=studentRecordDS.schema();
List nestedList=new ArrayList();
for(StructField字段:st.fields()){
添加((StructType)字段.dataType());
}
}
TL;DR使用spark.read.json
(正如您所做的那样),然后在选择中使用“展平”操作符
(我使用Scala并将转换为Java作为您的家庭练习:)
让我们用你的样品
$ cat ../datasets/sample.json
{
"entity": {
"name": "SJ",
"id": 31
},
"hierarchy": {
"state": "TN",
"city": "CBE"
},
"data": {}
}
代码可以如下所示(同样是Scala)
让我们展平实体
和层次结构
顶级列
scala> entities.select("entity.*", "hierarchy.*").show
+---+----+----+-----+
| id|name|city|state|
+---+----+----+-----+
| 31| SJ| CBE| TN|
+---+----+----+-----+
聚合现在应该是不需要动脑筋的了。TL;DR使用spark.read.json
(正如您所做的那样),然后在选择中使用“展平”操作符
(我使用Scala并将转换为Java作为您的家庭练习:)
让我们用你的样品
$ cat ../datasets/sample.json
{
"entity": {
"name": "SJ",
"id": 31
},
"hierarchy": {
"state": "TN",
"city": "CBE"
},
"data": {}
}
代码可以如下所示(同样是Scala)
让我们展平实体
和层次结构
顶级列
scala> entities.select("entity.*", "hierarchy.*").show
+---+----+----+-----+
| id|name|city|state|
+---+----+----+-----+
| 31| SJ| CBE| TN|
+---+----+----+-----+
聚合现在应该是不需要动脑筋的了