首页 > 解决方案 > 在数据库中加入具有非常大的持久表的内存数据帧?

问题描述

我有一个内存中的数据框,它具有某些标识符,使用这些标识符我只想从 RDBMS(Sql 服务器)中持久的非常大(500M 行)表中获取相关数据。

最好的方法是什么?绝对不想将整个表放在内存中。也不能循环。如果要查找的是单列键,我仍然可以考虑构建一个逗号分隔的字符串并针对该列表执行 IN 子句,但我有多个字段是标识符。

我看到的唯一选择是将数据帧保存到数据库中,在数据库服务器上加入并带回数据。但是看起来很笨重。

我读过 dask 作为一个选项,但不太确定那个选项,因为将整个表放在内存/磁盘中对我来说似乎仍然不是一种有效的技术

标签: pythonsqlsql-serverpandasdask

解决方案


我看到的唯一选择是将数据帧保存到数据库中,在数据库服务器上加入并带回数据。但是看起来很笨重。

就计算时间而言,这听起来是最有效的选择。

我读过 dask 作为一个选项,但不太确定那个,因为将整个表放在内存/磁盘中对我来说似乎仍然不是一种有效的技术

如果包含您关心的条目的数据框很小,那么 Dask Dataframe 可能不会立即将所有内容读入内存。它可能会在小空间内智能地扫描您的数据库。在这里使用 Dask 的真正成本是您需要将数据移入和移出数据库,这取决于您的数据库连接器,这将是慢还是快。

我会尝试一下,看看它的表现如何。


推荐阅读