【问题标题】:What are the efficient ways to parse / process huge JSON files in Python? [closed]在 Python 中解析/处理巨大的 JSON 文件的有效方法是什么? [关闭]
【发布时间】:2018-12-19 02:09:25
【问题描述】:

对于我的项目,我必须解析两个大的 JSON 文件,一个是 19.7 GB,另一个是 66.3 GB。 JSON 数据的结构过于复杂。第一级字典和第二级可能有列表或字典。 这些都是网络日志文件,我必须解析这些日志文件并进行分析。 将这么大的 JSON 文件转换为 CSV 是否可取?

当我尝试将较小的 19.7 GB JSON 文件转换为 CSV 文件时,它有大约 2000 列和 50 万行。我正在使用 Pandas 来解析这些数据。 我还没有碰过更大的文件 66.3 GB。我是否朝着正确的方向前进? 当我将转换那个更大的文件时,会出现多少列和行,不知道。

如果存在,请提出任何其他好的选择。 还是建议直接从 JSON 文件中读取并在其上应用 OOP 概念。

我已经阅读了这些文章:article 1 from Stack Overflowarticle 2 from Quora

【问题讨论】:

  • 你应该使用 c 而不是 python 来处理这种东西。
  • @debaonline4u 无需学习新的编程语言 C,您可以在 Python 中很好地做到这一点,我们已经处理了具有 2000 万个键的 json,并且比您的嵌套更多。首先将其放入 Pandas 数据框中,然后您可以进行任何您想做的操作..
  • 我更喜欢使用 json streamer,而不是将其转换为 CSV。
  • 如果可以转换成CSV,结构就不会那么复杂了。考虑使用可以memory map 的二进制格式、HDF5 等格式或数据库。

标签: python json pandas csv


【解决方案1】:

您可能想使用dask,它的语法与 pandas 相似,只是它的并行(本质上是它的许多并行 pandas 数据名)和惰性(这有助于避免 ram 限制)。

您可以使用read_json 方法,然后在dataframe 上进行计算。

【讨论】:

  • 学习 dask 图书馆和工作需要多少时间。
  • 如果我用 read_json 方法读取整个 20 GB 的数据,并将其转换为数据帧,那么它将消耗多少内存?
  • 对我来说大约是一个半小时,他们在website 上写了很棒的笔记本。你也可以看这个video,它提供了一个关于图书馆的很好的解释。
  • 您可以指定blocksize(因此 json 不会在 1 个分区中)进行计算,然后例如保存在 csv 文件中。因为它很懒,所以整个文件都不会在内存中。
  • 嗨@moshevi,我目前正在努力为我的实验加载 Pandas 中的 Json 行的大文件。我正在使用 chunksize 参数,特别是我注意到更大的块更快地解析/更大的内存输出。到目前为止,我在 10k 块、体面的解析时间和高达原始文件 5.7 倍的内存使用率方面达到了很好的平衡(这个比例到目前为止代表 280Mb 输入文件和 4.4 Gb)。你认为 Dask 能在这里做点什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 2020-06-15
  • 2018-12-31
  • 1970-01-01
相关资源
最近更新 更多