代码之家  ›  专栏  ›  技术社区  ›  evilkonrex

dask数据帧的延迟重划分

  •  3
  • evilkonrex  · 技术社区  · 7 年前

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

    df.memory_usage().sum() 但是 repartition() 似乎不接受它(标量)作为参数。

    有没有办法进行这种适应性(基于数据大小)的延迟重新分区?

    另外,按分区大小重新分区也是一个非常有用的功能

    1 回复  |  直到 7 年前
        1
  •  2
  •   MRocklin    7 年前

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

    正如您所建议的,您可以切换到较低级别的系统,如延迟。在这种情况下,我会转而使用 futures 并在结果出现时跟踪其大小,从而动态触发分区的适当合并。不过,这可能比预期的要复杂得多。