Json 使用 Spark 使用包含结构结构的数组进行解析



my json: (存储在minijson.json(

{
"arr": [
{
"st1": {},
"st2": {
"a": {}
},
"val": 0.0,
"x": "1"
}
]
}

我正在使用Spark版本2.1.0来读取JSON。

读取代码:

minidf = spark.read.json("minijson.json")
minidf.printSchema()

输出:

root
|-- arr: array (nullable = true)
|    |-- element: struct (containsNull = true)
|    |    |-- val: double (nullable = true)
|    |    |-- x: string (nullable = true)

我不明白为什么它无法检测 json 中存在的st1st2a字段。

请帮助解决此问题。

如果键具有空键,则 Spark 不会创建列,因为"abc": {}它必须至少具有键和值才能创建列。

下面是一个添加键和值的简单示例

{
"arr": [
{
"st1": {
"name": ""
},
"st2": {
"a": {
"abc": ""
}
},
"val": 0.0,
"x": "1"}
]
}

Wich 将有一个架构

root
|-- st1: struct (nullable = true)
|    |-- name: string (nullable = true)
|-- st2: struct (nullable = true)
|    |-- a: struct (nullable = true)
|    |    |-- abc: string (nullable = true)
|-- val: double (nullable = true)
|-- x: string (nullable = true)

最新更新