我使用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