用dask合并大型数据集

问题描述 投票:1回答:1

我有两个数据集,一个是45GB左右,包含1年的日常交易,第二个是3.6GB,包含客户ID和详细信息。我想把这两个数据集合并到一个共同的列上,以创建一个单一的数据集,这超出了服务器的内存,因为每个客户可以有多个交易。我的工作环境是一台16核64GB内存的windows服务器,据我所知,对于这种类型的工作来说,它的规格非常有限。

方法论

将大数据集读取到dask数据框架中,并将索引设置为客户ID。在pandas中读取3.6GB的数据集,并将索引设置为客户ID。启动一个本地集群,参数为memory_limit='50GB', processes=False。将dask数据框与pandas数据框在索引上合并(left_index=True,right_index=True)。

这个方法创建了75000个任务,最终炸毁了内存。

我想达到的目的可能吗?我是不是选错了工具?我已经没有办法了,我非常需要一些帮助。

pandas dask large-data
1个回答
0
投票

是的,你想做的事情是可能的,但你可能需要玩一下分区大小。 如果你的数据有很多重复,那么Pandas可能会突然产生非常大的值。 你可以通过以下方式解决这个问题...

  1. 使用较小的分区(也许)
  2. 减少平行度的数量(也许可以尝试一下。dask.config.set(scheduler="single-threaded") 看看是否有用
© www.soinside.com 2019 - 2024. All rights reserved.