用于数据处理的Dask包的文档说:
dataframes看起来和感觉就像熊猫数据,但是使用多线程操作比内存更大的数据集。
但在同一页的后面:
一只DataFrame是由几只记忆中的熊猫DataFrames组成的,它们沿着这个索引分离开来。
Dask是否顺序地从磁盘读取不同的DataFrame分区并执行计算以适应内存?它是否在需要时将一些分区溢出到磁盘?通常,Dask如何管理数据的内存<->磁盘IO以允许大于内存的数据分析?
我试着在10M MovieLens数据集上执行一些基本的计算(例如平均评分),而我的笔记本电脑(8GBRAM)开始交换数据。
发布于 2016-03-28 19:39:37
Dask.dataframe懒散地加载数据,并试图通过数据集以一次线性扫描方式执行整个计算。令人惊讶的是,这通常是可行的。
智能转储到磁盘也是一个选项,它可以管理,特别是当需要洗牌时,但通常有解决办法。
发布于 2018-12-27 09:49:19
两年后,我恰巧来到了这个页面,现在有一个简单的选项可以限制每个工作人员使用内存。假设这是@MRocklin在这个线程停止活动后包含的。
$ dask-worker tcp://scheduler:port --memory-limit=auto # total available RAM on the machine
$ dask-worker tcp://scheduler:port --memory-limit=4e9 # four gigabytes per worker process.此特性称为Spill-to-disk员工策略,详细信息可在文档中找到这里。
显然,额外的数据将溢出到下面命令所指定的目录中:
$ dask-worker tcp://scheduler:port --memory-limit 4e9 --local-directory /scratch 该数据仍然可用,必要时将从磁盘中读取。
https://stackoverflow.com/questions/36269461
复制相似问题