我的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
字段。
请帮忙解决这个问题。
答案 0 :(得分:0)
如果密钥的空键为"abc": {}
,则Spark不会创建列。它必须至少包含一个键和值才能创建列。
下面是一个添加键和值
的简单示例{
"arr": [
{
"st1": {
"name": ""
},
"st2": {
"a": {
"abc": ""
}
},
"val": 0.0,
"x": "1"}
]
}
将有一个架构
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)