【发布时间】:2020-07-21 00:23:33
【问题描述】:
我有 16 个 JSON 文件,每个文件大小约为 14GB。我尝试了以下方法逐行阅读它们。
with open(file_name, encoding="UTF-8") as json_file:
cursor = 0
for line_number, line in enumerate(json_file):
print ("Processing line", line_number + 1,"at cursor index:", cursor)
line_as_file = io.StringIO(line)
# Use a new parser for each line
json_parser = ijson.parse(line_as_file)
for prefix, type, value in json_parser:
#print ("prefix=",prefix, "type=",type, "value=",value,ignore_index=True)
dfObj = dfObj.append({"prefix":prefix,"type":type,"value":value},ignore_index=True)
cursor += len(line)
我的目标是将它们加载到 pandas 数据框中以执行一些搜索操作。
问题是这种方法需要花费大量时间来读取文件。
还有其他最佳方法可以实现这一目标吗?
【问题讨论】:
-
关于加载一个json到pandas,你试过
pd.read_json(file_name)吗? -
是的。这会立即将整个文件加载到内存中,从而导致内核崩溃。
-
尺寸可能是一种威慑。可能数据库会更好地为您服务
-
看看 mongoDB(存储 JSON)和 pymongo。您可以使用字段名称、条件、搜索等从 JSON 中获取所有内容。可能需要使用 Dask 而不是 pandas(非常相似的语法),具体取决于您拥有多少 RAM(pandas df 就像文件大小的 4 倍)。跨度>
标签: python json pandas data-science ijson