对dask数据帧进行惰性重新分区

时间:2017-09-22 08:44:42

标签: dask dask-distributed

在延迟数据帧处理的几个阶段之后,我需要在保存之前重新分区我的数据帧。但是,.repartition()方法要求我知道分区的数量(而不是分区的大小),这取决于处理后的数据大小,这是未知的。

我想我可以通过df.memory_usage().sum()对大小进行延迟计算,但repartition()似乎不接受它(标量)作为参数。

有没有办法做这种适应性(基于数据大小)的懒惰重新分区?

PS。由于这是我的管道中的(几乎)最后一步,我可以通过转换为“手动”延迟和重新分区来解决这个问题(我不需要回到数据帧),但我正在寻找一种更简单的方法这样做。

PS。按分区大小重新分区也是一个非常有用的功能

1 个答案:

答案 0 :(得分:1)

不幸的是,Dask的任务图构造立即发生,并且无法以分区数量未立即知道或懒惰计算的方式进行分区(或执行任何操作)。

您可以按照建议切换到延迟等较低级别的系统。在这种情况下,我将切换到使用futures并跟踪结果的大小,从而在运行中触发适当的分区合并。这可能比想要的要复杂得多。