2

我正在尝试将 dask bag 用于 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
4

1 回答 1

1

从单个文件读取时,尝试将块大小设置在 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,但随后不对其进行任何操作。您可能想要删除该行。

于 2016-11-02T14:26:50.673 回答