如何从嵌套的JSON中提取密钥

时间:2019-08-31 16:08:23

标签: scala apache-spark

我想使用spark从嵌套的json中提取密钥。

我在JSON以下

{
    "predicates": {
        "API_No": "http://www.oilandgas.com/api_no",
        "Facility_ID": "http://www.oilandgas.com/facility_id"
    },
    "prefixes": {
        "API_No": "http://www.oilandgas.com/api_no/ ",
        "Facility_ID": "http://www.oilandgas.com/facility_id/ "
    },
    "relations": {
        "API_No": [
            "Facility_ID",
            "County"
        ]
    },
    "grahName": "http://www.oilandgas.com/data"
}

我在下面的代码中读了json

val df = spark.read.option("multiline", "true").json("path/to/above/json")
df.select(explode(array(col("relations")))).columns.foreach(println)

我想从数据框中获取“关系”中的“ API_No”键。

谢谢。

1 个答案:

答案 0 :(得分:0)

要从数据帧中以relations的形式获取API_No中的密钥,您只需投影(选择)仅relations密钥即可。由于relations键的类型为struct,因此通过投影可以得到所需的结果。如下所示:

df.select("relations.*").columns.foreach(println)

它将给出以下结果:

API_No

希望对您有帮助!