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 中存在的st1
、st2
和a
字段。
请帮助解决此问题。
如果键具有空键,则 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)