dask 如何处理大于内存的数据集?

问题描述 投票:0回答:1

我正在寻求有关使用 Dask 有效分析数据的指导。

我选择使用 Dask 从 SQL 表 (dask.read_sql_table) 或 CSV 文件 (dask.read_csv) 延迟加载 DataFrame。

我正在使用此代码

df = dd.read_sql_table(args)
df= client.persist(df)
...
...
df[column].min().compute()
df[column].max().compute()

使用 persist 方法的原因是,如果我不使用 persist,那么 dask 会在每次调用 min 和 max 时将数据加载到内存中,并且我不希望每次调用都花费大量时间,如果我使用 persist,它只会在内存中加载一次数据,然后后续调用(min,max)会变得非常快。

但是我很困惑 dask persist 方法是如何工作的? 如果我的数据集大小是 8Gb,内存大小是 4GB,persist 方法是否会加载内存中的所有数据?还是加载内存中唯一可能的分区,然后使用分区交换机制进行计算?

python dask dask-distributed
1个回答
1
投票

来自 Dask 文档

当用户持有 Future 对象或持久集合(其中在 dask 图中包含许多此类 Future,通常可以通过其 .dask 属性访问)时,他们会将这些结果固定到活动内存中

Dask persist 方法不会溢出到磁盘,当您使用它时,您的分布式集群中必须有足够的 RAM 来存储所有数据。如果您尝试保存大于内存的数据集,它将失败。

© www.soinside.com 2019 - 2024. All rights reserved.