在Spark中解析Json并根据节点值

时间:2017-08-09 16:33:18

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

我使用spark 1.6.3来解析json结构

我在下面有一个json结构:

    {
    "events":[
      {
        "_update_date":1500301647576,
        "eventKey":"depth2Name",
        "depth2Name":"XYZ"
      },
      {
        "_update_date":1500301647577,
        "eventKey":"journey_start",
        "journey_start":"2017-07-17T14:27:27.144Z"
      }]
    }

我想在数据帧中将上面的JSON解析为3列。 eventKey的值(deapth2Name)是Json(deapth2Name)中的一个节点,我想从相应的节点读取值,将它添加到列" eventValue"这样我就可以动态地容纳任何新事件。

这是预期的输出:

    _update_date,eventKey,eventValue
    1500301647576,depth2Name,XYZ
    1500301647577,journey_start,2017-07-17T14:27:27.144Z

示例代码:

    val x = sc.wholeTextFiles("/user/jx665240/events.json").map(x => x._2)
    val namesJson = sqlContext.read.json(x)

    namesJson.printSchema()
    namesJson.registerTempTable("namesJson")
    val eventJson=namesJson.select("events")
    val mentions1  =eventJson.select(explode($"events")).toDF("events").select($"events._update_date",$"events.eventKey",$"events.$"events.eventKey"")

$"events.$"events.eventKey""无效。

您能否建议如何解决此问题。

谢谢, SREE

0 个答案:

没有答案