我正在开发一个使用Python3.4和PyQt的应用程序。该程序的目标是管理和分析大量数据-多达约50个二进制文件,其总大小可能高达2-3 GB。当我试图将几个文件加载到程序中时,它在加载过程中停止响应,然后需要大约1.5 to的RAM才能继续运行。我的问题很普遍--在python/PyQt中有哪些可能的方法来处理这样的数据集?
发布于 2016-02-20 05:30:44
您可以考虑HDF5格式,它可以使用h5py、pytables或其他python包进行访问。根据数据格式的不同,HDF5可以让您以高效的方式访问硬盘上的数据,这实际上意味着您可以节省内存。缺点是,作为一名程序员,它需要您做出一些努力。
发布于 2016-02-21 02:57:28
@deets做对了……分解问题。
这个问题非常广泛……因为它没有描述下游需求。所以让我分享一下我不得不构建的框架……关键的解决方案是使用HDF并围绕批量存储中的数据结构构建一些服务……它给了我一个很好的解决方案。
我的应用程序分为
a) remote sources -> Collection Subsystem -> Bulkstore
b) Bulkstore -> BatchAnalysis -> dyanmicstore
c) dynamicstore -> webapp+visualization -> UI
收集系统不断地从XML语言收集日志,解析30+并将行附加到单个批量存储语言的HDF5文件中。
杂货店的大小因语言而异...从20G到<1M...
batchanalysis (@deets‘计算内核’)被设计为使用最新的~12M事件(内存限制)。
关键是要学习如何构建大型商店……在我的例子中,我将大容量存储分成几个季度,并在所有季度中使用一个主后备索引。这些服务分为以下类层次结构:
bulkstore (core HDF services)
+- dataset (manage datasets/directory within HDF)
+- appdata (my apps knowledge of logs across the datasets)
+- dynamicstore (output of batchanalysis are HDF's themselves)
希望这能帮到你。
1小贴士...在HDF中管理数据集有一个技巧...即。有大量数据的HDF需要很长时间才能获得数据集的目录。
如果您需要处理对为BatchAnalysis构建Spark解决方案感兴趣的...
https://stackoverflow.com/questions/35514886
复制相似问题