pandas - 使用 dask 合并大型数据集
问题描述
我有两个数据集,一个大约 45GB,包含 1 年的每日交易,第二个是 3.6GB,包含客户 ID 和详细信息。我想将两者合并到一个公共列上以创建一个数据集,该数据集超出了服务器的内存,因为每个客户可能有多个事务。我正在使用具有 16 个内核和 64GB RAM 的 Windows 服务器,据我所知,这种工作的规格非常有限。
方法
将大数据集读入 dask 数据帧并将索引设置为客户 ID。在 pandas 中读取 3.6GB 数据集,并将索引设置为客户 ID。使用参数 memory_limit='50GB' 和 processes=False 启动本地集群。将 dask 数据帧与索引上的 pandas 数据帧合并(left_index=True,right_index=True)。
这种方法创建了 75000 个任务,最终会炸毁内存。
我想要完成的事情可能吗?我是否为此选择了错误的工具?我的想法不多了,我迫切需要一些帮助。
解决方案
是的,您想做的事情是可能的,但您可能需要稍微调整一下分区大小。如果您的数据中有很多重复,那么 Pandas 可能会突然产生非常大的值。您可以通过...解决此问题
- 使用较小的分区(也许)
- 减少并行量(也许试试看
dask.config.set(scheduler="single-threaded")
是否有帮助
推荐阅读
- c++ - 为什么我会收到“无效读取大小 8”?(瓦尔格林德)
- react-native - 道具(样式)不会传递给孩子
- android-studio - Android Studio 模拟器 AMD Ryzen 5 不工作
- java - 我可以结束一个活动并从一个片段开关案例开始一个新的活动吗?
- python-3.x - 如何将 Dash-Plotly 下拉列表的值放入 python 变量?
- c# - 按租户架构应用 EF Core 迁移
- android - MapBox 9.2.0 在 Android 8.0 (Oreo) JNI DETECTED ERROR IN APPLICATION 中导致崩溃
- javascript - 在可排序的 Jquery UI 上拖动项目的问题
- mysql - ThinkingSphinx::SphinxError(未知的 MySQL 错误):
- jboss6.x - 无法为自定义液滴创建类 | ATG 11.1 | 老板6.1