繁体   English   中英

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

[英]How to split a huge json file in python (or decode it extremely fast)

我有一个需要使用的巨大的json文件(大约30 gb)。 使用python的json或cjson模块对其进行解码太慢。

有什么办法可以

a)智能分割文件(不是逐行分割,而是我的json对象),或b)快速解码一个巨大的json。

谢谢

如果你不知道你的JSON文件的结构没有什么可以做,除了使用更快的JSON解码器等(如ijson它可以做流媒体,或ujson )。

也可能是如果您需要同时将所有python中的数据存储在内存中,则速度会受到交换/物理内存不足的影响-在这种情况下,增加内存可能会有所帮助(显而易见) ,我认为值得一提)。

如果不需要通用解决方案,请自己检查文件的结构,然后查看如何拆分它。 例如,如果它是任何东西的数组,则很容易手动分离出可能复杂的数组元素,然后将其拆分为任意大小的块。

PS:您始终可以通过将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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM