我有一本非常大的字典,我需要分析。
字典是如何存在的?
字典是日志文件的数据透视表。 我每天都有一个库存快照,现在我有过去一个月的快照。
每个快照如下所示:
2013-01-01 Apple 1000
2013-01-01 Banana 2000
2013-01-01 Orange 3000
....
然后,我按产品名称对所有记录进行分组,并计划稍后进行时间序列分析。 我的输出看起来像这样:
{
Apple:[(2013-01-01,1000),(2013-01-02, 998),(2013-01-03,950)...],
Banana:[(2013-01-01,2000),(2013-01-02, 1852),(2013-01-03, 1232)...]
Orange....
}
如您所知,假设您拥有多年的库存快照和非常广泛的库存广度......这本词典变得非常庞大。整个'GROUPING'进程发生在内存中,字典的大小超出了内存限制。
我想知道如何将内存使用量限制为特定数量(比如5GB,我不想禁用正常使用的服务器)并在磁盘上完成工作。
Here是一个非常类似的问题,但是在“最佳投票”回答之后,在我将循环次数更改为真正的“大数据”大小后,内存仍然很快被消耗掉。
所以任何真正不会扼杀记忆的例子都会受到赞赏,速度对我来说并不重要。
(注意,有几种方法可以优化数据结构,以便减少字典大小,但......库存快照不是定期的,而且某些产品的快照数量不同,因此'MATRIX'的想法可能不会工作)