Dask 保姆内存错误 - Worker 太慢而无法终止

问题描述 投票:0回答:1

我正在尝试使用 Dask 打开一个 jsonl 文件,当我第一次运行该程序时,我收到一条警告,称工作人员使用的内存超出了分配的内存,最终保姆尝试终止该工作人员但失败了,然后整个程序最终崩溃程序最终说所有 4 个工人在尝试运行它时都死了。

我尝试询问 chat-gpt 并查看文档寻找答案,但我找不到工作日志或任何有关如何解决问题的信息,但无济于事,我看到的唯一建议是禁用保姆,但我决定这样做这不是一个好主意,因为它们肯定是我的代码存在根本性错误,所以我转向堆栈溢出来寻求答案,因为我迷路了。

Terminal output(1) Terminal output(2)

from dask.distributed import LocalCluster
import dask.dataframe as dd
from multiprocessing import freeze_support

if __name__ == '__main__':
    freeze_support()
    cluster = LocalCluster(n_workers=2,processes=True,threads_per_worker=200)          
    client = cluster.get_client()

    df = dd.read_json("merged_en.jsonl")
    df.x.sum().compute()
    client.close()
    cluster.close()
python dataframe multiprocessing dask local
1个回答
0
投票

因此,这里发生的情况是,您尝试将文件加载到单个分区中,而该文件太大,无法容纳一个工作人员的内存。

如果文件是 JSON 行数据(正如预期的

jsonl
扩展名),您应该使用
lines
kwarg 并指定
blocksize
:

df = dd.read_json("merged_en.jsonl", lines=True, blocksize="128 MiB")

请参阅文档了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.