python - 在数据库中加入具有非常大的持久表的内存数据帧?
问题描述
我有一个内存中的数据框,它具有某些标识符,使用这些标识符我只想从 RDBMS(Sql 服务器)中持久的非常大(500M 行)表中获取相关数据。
最好的方法是什么?绝对不想将整个表放在内存中。也不能循环。如果要查找的是单列键,我仍然可以考虑构建一个逗号分隔的字符串并针对该列表执行 IN 子句,但我有多个字段是标识符。
我看到的唯一选择是将数据帧保存到数据库中,在数据库服务器上加入并带回数据。但是看起来很笨重。
我读过 dask 作为一个选项,但不太确定那个选项,因为将整个表放在内存/磁盘中对我来说似乎仍然不是一种有效的技术
解决方案
我看到的唯一选择是将数据帧保存到数据库中,在数据库服务器上加入并带回数据。但是看起来很笨重。
就计算时间而言,这听起来是最有效的选择。
我读过 dask 作为一个选项,但不太确定那个,因为将整个表放在内存/磁盘中对我来说似乎仍然不是一种有效的技术
如果包含您关心的条目的数据框很小,那么 Dask Dataframe 可能不会立即将所有内容读入内存。它可能会在小空间内智能地扫描您的数据库。在这里使用 Dask 的真正成本是您需要将数据移入和移出数据库,这取决于您的数据库连接器,这将是慢还是快。
我会尝试一下,看看它的表现如何。
推荐阅读
- python - 如何提高这个嵌套循环的性能?
- python-3.x - 计算排序数组的最小交换次数(选择排序太慢)
- html - 如何以角度动态加载页面结构
- ios - 在纯 Swift 中使用框架时会出现“重复符号”错误吗?
- c++ - 如何使用 range-v3 的范围::actions::transform?
- javascript - 如何检查函数的返回
- python - 一个测试用例未通过 Google Foobar Challenge
- kubernetes - Kubernetes 1.18 Caclico CNI CIDRNotAvailable 消息
- c - 第二次写入字节数组时 STM32 上的 Hard_fault - 为什么?
- android - 当屏幕锁定在本机上时如何显示来电