处理具有多个根元素的大JSON并读入pandas数据框

问题描述 投票:0回答:1

我想(预处理)大型JSON文件(每个5-10GB),其中包含多个根元素。这些根元素彼此跟随,没有分隔符,例如:{} {} ....

所以我首先编写了以下简单代码以获取有效的JSON文件:

with open(file) as f: 
    file_data = f.read()
    file_data = file_data.replace("}{", "},{") 
    file_data = "[" + file_data + "]"
    df = pd.read_json(file_data)

显然,这不适用于大文件。甚至400MB的文件也不起作用。 (我有16GB的内存)

我已经读过,可以使用块,但我无法通过“块逻辑”来实现有办法“分块化”吗?

很高兴为您提供帮助。

python json
1个回答
0
投票

我很难想象多根元素的想法,但是您应该将file_data内容写入磁盘,然后尝试分别读取它。如果您打开了文件,除了file_data对象(甚至可能是修改后的对象)要消耗的RAM之外,它还会消耗RAM。尽管这是垃圾收集器的问题。我认为函数返回后才完成垃圾收集。)尝试使用f。显式关闭而不是with,然后从单独的函数返回。

© www.soinside.com 2019 - 2024. All rights reserved.