Python 将bson写入磁盘时出现内存不足错误
我已经建立了一个庞大的字典,大概有几百GB左右。有没有一个聪明的方法来存储这样的对象。我正在使用以下例程推送到磁盘:Python 将bson写入磁盘时出现内存不足错误,python,json,mongodb,bson,Python,Json,Mongodb,Bson,我已经建立了一个庞大的字典,大概有几百GB左右。有没有一个聪明的方法来存储这样的对象。我正在使用以下例程推送到磁盘: print "Writing to file..." jsontext = bson.dumps(sample_dict) f = open(predump_file, 'wb+') f.write(jsontext) f.close() 以下是我得到
print "Writing to file..."
jsontext = bson.dumps(sample_dict)
f = open(predump_file, 'wb+')
f.write(jsontext)
f.close()
以下是我得到的堆栈跟踪:
Writing to file...
Traceback (most recent call last):
File "Combine.py", line 1331, in <module>
jsontext = bson.dumps(sample_dict)
File "/mnt/opt/Centos5.8/python-2.7.8/lib/python2.7/site-packages/bson/__init__.py", line 69, in dumps
return encode_document(obj, [], generator_func = generator)
File "/mnt/opt/Centos5.8/python-2.7.8/lib/python2.7/site-packages/bson/codec.py", line 207, in encode_document
encode_value(name, value, buf, traversal_stack, generator_func)
File "/mnt/opt/Centos5.8/python-2.7.8/lib/python2.7/site-packages/bson/codec.py", line 177, in encode_value
traversal_stack, generator_func))
MemoryError: out of memory
正在写入文件。。。
回溯(最近一次呼叫最后一次):
文件“Combine.py”,第1331行,在
jsontext=bson.dumps(示例)
文件“/mnt/opt/Centos5.8/python-2.7.8/lib/python2.7/site-packages/bson/_-init__;.py”,第69行,转储文件
返回编码\文档(对象,[],生成器\函数=生成器)
文件“/mnt/opt/Centos5.8/python-2.7.8/lib/python2.7/site packages/bson/codec.py”,第207行,在encode_文档中
编码值(名称、值、buf、遍历堆栈、生成器函数)
文件“/mnt/opt/Centos5.8/python-2.7.8/lib/python2.7/site packages/bson/codec.py”,第177行,在encode_值中
遍历(堆栈,生成器(函数))
内存错误:内存不足
选择(我目前只能想到这些):
我认为这实际上取决于dict的内容以及以后检索数据的方式。如果我是你,我会选择第二种方法。对于mongo db,最大(bson)文档大小为16MB。不能存储大小大于该值的数据。 您可以将每个
键值作为文档存储在集合中。
在您的情况下,您可以使用键
字段作为文档的\u id
属性您可以显示一些词典内容吗?嵌套字典的深度是多少?就我个人而言,我会使用一个数据库来完成这项任务,很高兴知道这个限制