是否有人能够告诉我dask如何比简单的术语数据集大于内存数据集。例如,我有一个6GB的数据集和4GB RAM和2个核心。 dask如何加载数据并进行简单的计算,例如列的总和。
dask会自动检查内存的大小,并将数据集块化为小于内存块。然后,一旦请求计算将块大块带入内存并使用每个可用内核进行计算。我是对的。
谢谢
迈克尔
通过“数据集”,您显然是指数据框。让我们考虑一下您可以加载的两种文件格式:CSV和镶木地板。
dd.read_csv(path, blocksize=..)
选择适合您应用程序的每块字节数,或者允许Dask尝试进行正确的猜测; “100MB”可能是一个很好的尺寸尝试。在这两种情况下,每个工作人员将一次加载一个块,并计算您要求的列总和。然后,将丢弃加载的数据以为下一个数据腾出空间,仅将总和的结果保存在内存中(每个分区的单个数字)。如果您有两个工作程序,则两个分区将在内存中并同时处理。最后,将所有总和加在一起。
因此,每个分区应该可以很好地适应内存 - 不要太大 - 但是加载和处理每个分区所需的时间应该远远超过调度任务在工作者上运行所产生的开销(后者<1ms) - 而不是太小了。