dask.bag 处理数据内存不足

dask.bag processing data out-of-memory

我正在尝试将 dask 包用于 wordcount 30GB 的 json 文件,我严格按照官方网站的教程:http://dask.pydata.org/en/latest/examples/bag-word-count-hdfs.html

还是不行,我的单机是32GB内存8核CPU。

我下面的代码,我过去常常处理 10GB 的文件,甚至无法工作,错误是 运行 几个小时没有任何通知 jupyter 崩溃了,我试过 Ubuntu 和 Windows 两个系统都是同样的问题。所以我怀疑 dask bag 是否可以处理内存不足的数据?还是我的代码不正确?

测试数据来自http://files.pushshift.io/reddit/comments/

import dask.bag as db
import json
b = db.read_text('D:\RC_2015-01\RC_2012-04')
records = b.map(json.loads)
result = b.str.split().concat().frequencies().topk(10, lambda x: x[1])
%time f = result.compute()
f

尝试在读取单个文件时将块大小设置在 10MB 范围内以将其分解一些。

In [1]: import dask.bag as db

In [2]: b = db.read_text('RC_2012-04', blocksize=10000000)

In [3]: %time b.count().compute()
CPU times: user 1.22 s, sys: 56 ms, total: 1.27 s
Wall time: 20.4 s
Out[3]: 19044534

此外,作为警告,您创建了一个包 records,但随后没有对其进行任何操作。您可能想删除该行。