【问题标题】:Dask concatenate high memory useDask 连接高内存使用
【发布时间】:2021-04-12 18:08:47
【问题描述】:

我正在尝试使用 dask 来计算存储在大约 1,000 个镶木地板文件之间的数据集中存储的数据摘要。每个文件在 1Mb - 10Mb 之间。当我将一个系列转换为一个数组并在该数组上计算 max 时,它工作得很好。但是,当我尝试和concatenate 两个数组时,我很快就耗尽了内存:

import dask.dataframe as dd
import dask.array as da

data = dd.read_parquet('../data/*.parquet')
field_1 = data['field_1'].to_dask_array()
field_2 = data['field_2'].to_dask_array()
both_fields = da.concatenate((field_1, field_2))
result = da.max(both_fields).compute()

我尝试过使用Client,但这非常慢,并且会发出很多关于垃圾收集占用过多 CPU 时间的警告。但是,它似乎确实在没有耗尽内存的情况下运行。

我是 dask 的新手,所以也许我误解了什么?

【问题讨论】:

    标签: python dask


    【解决方案1】:

    如果没有使用数组的具体原因,那么这可能会更好:

    both_fields = dd.concat([ddf['field_1'], ddf['field_2']], axis=0)
    

    【讨论】:

    • 感谢您的建议!这似乎做同样的事情,很快就会耗尽内存......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多