我有两个Json,它们作为below.our生产系统连接,将多个Json聚合到单个文件中,如下所示。我这里的问题是如何拆分由逗号分隔的单个json(即1&2),并从文件中删除3。%1、%2和%3之间的差异是%3没有条件ID
1---{name:string,
actid: string,
data:array<struct>,
conditionId:string
},
2---{name:string,
actid: string,
data:array<struct>,
conditionId:string
},
3---{name:string,
actid:string,
data:array<struct>
}发布于 2017-06-27 10:10:54
如果您有一个包含以下数据的文本文件
1--- {name:string, actid: string, data:array, conditionId:string }, 2---{name:string, actid: string, data:array, conditionId:string}, 3---{name:string, actid:string, data:array}如果您希望将格式错误的json filter为3,并将该文件另存为有效的json文件,则可以在spark中使用以下代码
val data = sc.textFile("path to the malformed input file")
data.flatMap(line => line.split("---"))
.map(array => array.split(","))
.filter(_.length > 3)
.map(array => conditions(array(0).split(":")(1), array(1).split(":")(1), array(2).split(":")(1), array(3).split(":")(1).replace("}", "")))
.toDF()
.write.json("path to output json file")您应该有一个包含有效json的文件。
{"name":"string","actid":" string","data":"array","conditionId":"string "}
{"name":"string","actid":" string","data":"array","conditionId":"string"}https://stackoverflow.com/questions/44771131
复制相似问题