【问题标题】:Pandas/Dask - Very long time to write to filePandas/Dask - 写入文件的时间很长
【发布时间】:2020-08-20 06:02:36
【问题描述】:

我有一些文件。最大的是约 8700 万行。我还有其他约 500K 行。我正在做的部分工作就是加入他们,当我尝试用 Pandas 做这件事时,我遇到了内存问题。所以我一直在使用 Dask。完成所有连接/应用非常快,但是写入 csv 需要 5 个小时,即使我知道生成的数据帧只有 26 行。

我读到一些连接/应用对 Dask 来说不是最好的,但这是否意味着使用 Dask 会更慢?因为我的速度很快。对数百万行进行所有计算/操作需要几秒钟。但是写出来需要很长时间。有什么想法可以加快速度/为什么会这样?

【问题讨论】:

    标签: python pandas csv dask


    【解决方案1】:

    您可以使用 Dask 并行处理或尝试写入 Parquet 文件而不是 CSV,因为使用 Dask 的 Parquet 操作非常快

    【讨论】:

    • 仍然需要 3.5 小时才能写到镶木地板。另外我需要它在 csv 中并且不知道如何转换。它说 ~10,000 个任务/81 个分区——这可能是个问题吗?
    • 如果您将使用 Dask 并行处理,那么它不会占用 3.5hrs。否则您可以使用concurrent.futures 模块并行写入数据。甚至multiprocessing 库也可以提供帮助。试一次。如果您对此感到困惑,我很乐意为您提供帮助
    • 谢谢。你有文档的链接吗?我不太确定该怎么做。
    【解决方案2】:

    dask 使用惰性求值。这意味着当您执行操作时,您实际上只是在创建处理图。

    一旦您尝试将数据写入 csv 文件,Dask 就会开始执行操作。 这就是为什么需要 5 个小时,他只需要处理大量数据。

    有关该主题的更多信息,请参阅https://tutorial.dask.org/01x_lazy.html

    加快处理速度的一种方法是通过使用具有更多资源的机器来增加并行度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-12
      • 2020-04-06
      • 1970-01-01
      • 2018-10-16
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      相关资源
      最近更新 更多