我有一个以下格式的JSON文件,我正在尝试从spark job中读取/查询。
{
"dimensions": [
{"id1":"val1"},
{"id2":"val2"},
{"id3":"val"}
...
]
}
val schema = (new StructType).
add("dimensions",
new ArrayType(MapType(StringType,StringType),true))
val df = sparkContext.read.schema(schema).json(file)
'尺寸'是一个JSON数组并包含键值对。我想把它读作键值对(map),以便在Spark SQL中轻松查询。
我在上面的架构上尝试了,但它给了我数组,每个项目都是MapType。 有没有办法将上面的json数组读作MapType?
最后,我希望能够编写类似于下面的spark sql,我可以选择单个键:
val result = spark.sql("SELECT dimensions.id1, dimensions.id3 FROM table")
谢谢!