如何分割一个巨大的json文件在python(或解码它非常快)



我有一个巨大的json文件(约30 gb),我需要与工作。用python的json或cjson模块解码它太慢了。

有什么办法我可以…

a)智能地分割文件(不是按行,而是按我的json对象)或B)解码这么大的json非常快。

谢谢

如果你不知道JSON文件的结构,你可以做的很少,除了使用更快的JSON解码器(例如ijson可以做流,或ujson)。

如果你需要同时在内存中存储python中的所有数据,速度可能会受到交换/没有足够的物理RAM的影响-在这种情况下,添加更多的RAM可能会有所帮助(很明显,我认为值得一提)。

如果您不需要通用的解决方案,请自己检查文件的结构并查看如何拆分它。例如,如果它是一个数组,那么可能很容易手动分离数组元素,尽管它们可能很复杂,并将其分成任意大小的块。

注:你总是可以测试下限是什么,通过只读取30GB文件作为二进制数据,丢弃数据-如果你是从网络上读取,网络速度可能是瓶颈;如果需要在内存中保存所有数据,只需创建相同大小的样本数据,由于交换等原因,可能需要相同的5个小时。

为什么不使用cat将json分成更小的部分,就像这样:

$ cat data.json | jq -c -M '.data[]' | sed 's/\"/\\"/g' | 
  while read line; do echo $line > parts/$(date +%s%N).json; done

最新更新