我正在从 Dataframe 中不断增加的站点池中收集大量数据,处理这些数据,合并它们,并最终将其保存到磁盘中。
到目前为止,这个方法运行得很好,但是现在我的服务器的内存容量即将耗尽,尽管内存消耗远远大于DF的大小(而且肯定可以在那里进行优化),为了能够在某个时候扩展这个过程,我需要考虑写入磁盘,而不是将所有内容都存储在内存中。而不是优化的东西,我将不得不重做在未来的某个时候无论如何。
你将如何构建这样一个重构呢?我的想法是:
1.每个站点继续使用一个 Dataframe
1.过程 Dataframe
1.保存到磁盘
1.在运行结束时,将磁盘中所有保存的DF合并到一个输出文件中
谢谢
2条答案
按热度按时间igetnqfo1#
上周我也遇到了同样的问题。我想出的解决方案是批处理。我在我的机器上做了实验,发现每个 Dataframe 5万行是个不错的数字。我一直向 Dataframe 写入,直到它达到这个数字,然后保存它,为标题添加索引,然后移到一个新的干净的 Dataframe 。我更喜欢在旧的 Dataframe 上覆盖,以避免Grabage收集器出现任何问题。
合并 Dataframe 可以通过多种方式实现,但都需要占用少量内存。例如,为了避免将所有 Dataframe 都加载到内存中,并将它们连接成一个非常大的 Dataframe ,您可以简单地查找到目标文件的末尾,直接写入,然后重复。
这不会导致内存中出现任何问题,因为在任何时间点,内存中仅加载1个 Dataframe 。
xdnvmnnf2#
将数据框写入sql,需要时查询所需和过滤后的数据。