首页 > 解决方案 > 数数 使用 dask 的大型镶木地板文件中的行数,没有内存错误

问题描述

我有 20 个镶木地板文件,每个文件大小约为 5GB。我要数没有。整个数据集中的记录。

我有当前的代码:

from dask.distributed import Client, LocalCluster

cluster = LocalCluster(n_workers=8, threads_per_worker=1)
client = Client(cluster)

import dask.dataframe as dd

df = dd.read_parquet("s3://bucket/2020_03_31/*.parquet", columns=['id'], chunksize="1000MB")
df.count().compute()

但是代码挂起并抛出内存错误。我的机器有 16 个内核和 64GB 内存。

编辑:

根据要求,我删除了 chunksize 参数,但输出仍然挂起。甚至诊断页面也停止加载。我没有超出内存错误,但我不知道发生了什么。

# Output hangs
df = dd.read_parquet("s3://bucket/2020_03_31/*.parquet", columns=['id'])

标签: pythonpandasdaskparquet

解决方案


我建议删除 chunksize 参数。通过这样做,您要求 Dask 将许多行组聚合到单个任务中,这可能会压倒您的记忆。


推荐阅读