在Spark中将JSON ArrayType转换为MapType

时间:2017-04-29 07:49:59

标签: apache-spark apache-spark-sql spark-dataframe

我有一个以下格式的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")

谢谢!

0 个答案:

没有答案