【发布时间】:2021-09-21 11:12:50
【问题描述】:
我在使用 dask 时遇到问题。与 pandas 相比,它非常慢,尤其是在读取高达 40gig 的大型数据集时。经过一些额外处理后,数据集增长到大约 100 多列,主要是 float64(这非常慢,尤其是当我这样调用计算时:output = df[["date", "permno"]].compute(scheduler='threading'))
我认为即使令人沮丧,我也可以忍受延迟,但是当我尝试将数据保存到镶木地板时:df.to_parquet('my data frame', engine="fastparquet") 它在大约 110gig ram 的服务器中内存不足。我注意到当我执行free -h 时,缓冲区/缓存内存从大约 40 兆字节增加到 40 + gig。
鉴于 dask 不会将所有内容加载到内存中,我很困惑这怎么可能。我在 dask 中为数据集使用了 100 个分区。
【问题讨论】:
-
数据从哪里来,你是怎么加载的?你在申请什么处理?您是否尝试过分布式调度程序或以其他方式查看任何诊断信息?
-
数据来自wrds数据库,是财务数据,我们应用了很多groupby,做一些排序,最后与另一个数据集(compu stat和crsp)合并。我尝试了分布式调度程序(本地机器),它在 4gig 内存不足。它在我们使用的google虚拟机中不起作用。我查看了端口 8787 的状态,但除了在我的机器中运行 4gig 后内存不足之外,我无法诊断出任何其他问题。但是,我认为 dask 默认使用可用内核来并行处理数据?
标签: dask dask-dataframe