Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何读取聚合的嵌套JSON?_Java_Json_Apache Spark_Apache Spark Sql - Fatal编程技术网

Java 如何读取聚合的嵌套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"

我是新手。 我所要做的就是读取嵌套的JSON并根据特定条件对它们进行分组。 例如:如果json包含一个人的详细信息,比如他的城市和zipcode。我想把属于同一个城市和zipcode的人分组

我一直在进步,直到将JSON读入数据集。 但我不知道如何将它们分组

我的嵌套JSON格式是

{
  "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|
+---+----+----+-----+
聚合现在应该是不需要动脑筋的了