繁体   English   中英

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

[英]How does dask work for larger than memory datasets

有谁能简单地告诉我dask是如何工作于大于内存数据集的。 例如,我有一个具有2个核心的6GB和4GB RAM的数据集。 如何轻松地加载数据并进行简单的计算(例如列总和)。

dask是否会自动检查内存的大小并将数据集分块为小于内存的碎片。 然后,一旦被请求进行计算,就将一块接一块地放入内存中,并使用每个可用内核进行计算。 我对吗?

谢谢

迈克尔

通过“数据集”,您显然是在指一个数据框。 让我们考虑一下您可能要加载的两种文件格式:CSV和镶木地板。

  • 对于CSV,文件中没有固有的分块机制,因此用户(用户)可以使用dd.read_csv(path, blocksize=..)选择适合您的应用程序的每块字节数,或者允许Dask尝试做一个体面的猜测; “ 100MB”可能是个不错的选择。

  • 对于镶木地板,格式本身具有内部数据分块,Dask将在加载数据时使用此模式

在这两种情况下,每个工作人员将一次加载一个块,并计算您要的列总和。 然后,将丢弃已加载的数据以为下一个分配空间,仅将总和的结果保留在内存中(每个分区为单个数字)。 如果您有两个工作线程,则两个分区将在内存中并同时处理。 最后,将所有总和相加。

因此,每个分区应该舒适地适合内存-不会太大-但是加载和处理每个分区所花费的时间应该比安排任务在工作程序上运行所施加的开销(后者<1ms)长得多-而不是太小了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM