我应该为我的Python库使用什么后端存储引擎?
我正在用Python写一个数据处理库,这个库可以从各种来源读取数据到内存中,处理这些数据,然后把它们导出成不同的格式。我之前是把数据直接加载到内存里的,但我处理的一些数据集特别大(超过4GB)。
我需要一个开源的库,能够优雅地处理大数据集。这个库需要能动态改变数据结构(比如添加、重命名和删除列),而且支持比较快的迭代。理想情况下,它应该能处理任意大小的字符串和整数(就像Python一样),不过如果需要的话,我可以把这个功能加到库里。而且,它还需要能处理缺失值。
有没有人有什么建议?
4 个回答
1
可以试试 Metakit。它在数据结构上很灵活,并且支持Python语言。虽然它不太被人关注,但其实已经存在很长时间了。
1
另一个建议是可以考虑使用Hadoop作为你的后台。它和之前提到的CouchDB有一些相似之处,但Hadoop更专注于高效处理大数据集,使用的是MapReduce算法。
跟CouchDB相比,Hadoop不太适合实时应用或者作为网站后面的数据库,因为它访问单个数据的速度比较慢。但当你需要处理大量数据时,它的表现非常出色,甚至可以处理达到Peta字节级别的数据。
所以,也许你可以试试Hadoop。当然,熟悉这些MapReduce算法可能需要一些时间,但它们确实是描述这类问题的好方法。而且,你不需要自己处理中间结果的存储。一个不错的副作用是,当你的数据集变大时,你的算法仍然可以正常工作,不过那时候你可能需要再加一台服务器。:-)
关于Hadoop和MapReduce,有很多书籍和文档可以参考,这里有一个不错的教程,可以帮助你开始使用Hadoop和Python。