如何在将JSON读入数据框之前使用pyspark修复格式错误的JSON

时间:2019-05-14 20:08:26

标签: python json apache-spark dataframe pyspark

我正在尝试将MongoDB转储读取到数据帧中。转储为JSON格式,但 Date 元素除外。这是JSON的样本片段:

{
	"_id": {
		"$binary": "AAAB92tW4kSWbIyLJj/zWg==",
		"$type": "03"
	},
	"_t": "VisitData",
	"ContactId": {
		"$binary": "qc4p+OQsEUumAtDWxvSZuA==",
		"$type": "03"
	},
	"StartDateTime": Date(1541452223793),
	"EndDateTime": Date(1541452682373),
	"SaveDateTime": Date(1541453891548),
	"ChannelId": {
...

我想将 date 转换为有效格式,以便可以将其正确地重新读取到数据框中。

我试图以一个大字符串读取文件,但是失败了,因为我认为文件太大。我还尝试以CSV格式读取它,它在创建数据框的范围内也能正常工作,但列无处不在,因此我不确定在使用此格式后如何处理才能获得有效的JSON 。另外,这似乎是错误的解决方法。

基本上,我不确定如何对pyspark中的文件进行“预处理”。非常需要有关正确方法的建议。

1 个答案:

答案 0 :(得分:1)

我对您的建议是使用python中的更干净的脚本将格式错误的Date部分修复为正确的JSON格式,然后使用spark.read.json(path)读取固定的JSON文件(如果您打算使用pyspark) 。

我不知道数据转储的大小,但是对于清理,您可能想要执行以下操作:https://stackoverflow.com/a/18515887/11388628

您可以使用readline()读取格式错误的json:

output = open("path\\filename.json","r")
output.readline()

根据需要进行清洁,保存新的JSON,然后使用spark.read.json(path)将其读入pyspark。