【问题标题】:dask.bag processing data out-of-memorydask.bag 处理内存不足的数据
【发布时间】:2016-11-01 21:00:26
【问题描述】:

我正在尝试将 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

【问题讨论】:

    标签: dask blaze


    【解决方案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,但随后不对其进行任何操作。您可能想删除该行。

    【讨论】:

    • 我尝试使用您给出的确切代码,似乎仍然是 OverflowError: Python int too large to convert to C long
    • 你解压bz2文件了吗?
    • 是的,100% 确定我已解压缩,但仍然遇到相同的错误。不知道是不是windows系统的问题?我也在Ubuntu虚拟机上试过,还是一样的问题。能告诉我你的实验环境吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2016-03-23
    相关资源
    最近更新 更多