大文件上的 dask 数据帧内存问题

dask dataframe memory issue on large file

a = dd.read_csv('huge.csv', blocksize=1e6)
g = a.groupby(['col_a', 'col_b'])
g.col_c.sum().max().compute()  # failed, MemoryError

我认为 dask.dataframe 不会因内存问题而失败,但是呢? 顺便说一句,我认为 blocksize 很重要,如果我设置一个非常小的尺寸,比如说 1e3,read_csv 会永远完成....

默认情况下,Groupby 聚合会缩减为单个分区。如果您的结果有很多组,那么这个单个分区可能会非常大。您可以考虑将 split_out= 关键字设置为 groupby.sum 某个适中的数字,例如 10。

g.col_c.sum(split_out=10).max().compute()

这将导致 groupby 聚合结果被分成十个分区,而不是一个分区。

我不知道这是否真的是你的问题,如果这不起作用,那么我建议创建一个 minimal complete verifiable example

此外,您可能需要更大的块大小。 1MB 的块非常小。我会拍摄 10-100 倍,或者,更好的是,将其保留为默认值。