Dask 的文档讨论了重新分区以减少开销 here .
然而,它们似乎表明您需要事先了解数据框的外观(即,将有预期数据的 1/100)。
有没有什么好的方法可以在不做假设的情况下合理地重新分区?目前,我只是使用 npartitions = ncores * magic_number
重新分区,并将 force 设置为 True
以在需要时扩展分区。这种“一刀切”的方法可行,但绝对不是最佳选择,因为我的数据集大小各不相同。
数据是时间序列数据,但不幸的是不是定期的,我过去使用过按时间频率重新分区,但这不是最优的,因为数据是多么不规则(有时几分钟没有,然后几千秒)
最佳答案
截至Dask 2.0.0你可以调用 .repartition(partition_size="100MB")
。
此方法执行分区大小的对象考虑 (.memory_usage(deep=True)
) 分割。它将加入较小的分区,或拆分已经变得太大的分区。
Dask's Documentation还概述了用法。
关于python - 有效划分 dask 数据帧的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44657631/