【问题标题】:Re-partitioning dask dataframe to reduce shuffling during rolling重新分区 dask 数据帧以减少滚动期间的改组
【发布时间】:2020-04-12 11:26:16
【问题描述】:

我正在为一家需要进行一些非常密集的聚合的公司工作

对于他们在过去两年中进行的每一笔销售,他们都希望获得有关该销售前一个月数据的滚动汇总。聚合体本身并不重要。两年的数据大约有 550 万行。

我发现我应该使用 Dasks 滚动函数,并为数据框提供数据范围索引。

我使用的机器有 4 个内核,所以我决定对数据使用 8 个分区并将其重新分区为 8、3 个月的分区。

但是,有一个问题。这 3 个分区中的每个分区的第一个月都将不得不滚动到另一个分区。这将涉及改组大约 200 万行!

我正在考虑以某种方式将月份的副本合并到每个分区的开头,但我想不出一种有效的方法来做到这一点。

有什么建议吗?

【问题讨论】:

  • 这听起来像是过早的优化。 200 万行不算多。您是否尝试过最简单的解决方案?很可能,您担心的性能问题并不重要。
  • 其实你有没有解决方案,并定时查看是否太慢?首先编写一个有效的代码:)
  • 是的。超级慢。虽然我同意 200 万行并不多,但必须对这些数据进行大约 20 个滚动聚合。所以它加起来很快

标签: python pandas time-series dask


【解决方案1】:

听起来您可能会受益于将数据拆分为更小的分区。

您可能需要阅读以下内容:https://docs.dask.org/en/latest/best-practices.html#avoid-very-large-partitions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-06
    • 2017-11-23
    • 2021-08-09
    • 2020-02-13
    • 2021-03-13
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多