我正在尝试将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中的文件进行“预处理”。非常需要有关正确方法的建议。
答案 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。