2016-11-01 6 views
2

Я пытаюсь использовать DASK мешок для WordCount 30GB из JSon файлов, я строг по tutoral от OFFICAL сети: http://dask.pydata.org/en/latest/examples/bag-word-count-hdfs.htmlобработка dask.bag данных из-за нехватки памяти

Но до сих пор не работает, мой сингл машина - 32 ГБ памяти и 8 ядер.

Мой код ниже, я использовал для обработки 10 ГБ файла, даже не работал, ошибка работает пару часов без какого-либо уведомления, jupyter был свернут, я попытался на Ubuntu и Windows, обе системы - та же проблема. Так что я подозреваю, что если сумка-память может обрабатывать данные из памяти? или что мой код неправильный?

Тестовые данные 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 

ответ

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 но ничего с ним не делать. Вы можете удалить эту строку.

+0

Я пытаюсь использовать именно тот код, который вы указали, кажется, все еще OverflowError: Python int слишком большой, чтобы конвертировать в C long – SharpLu

+0

Вы разархивировали файл bz2? – MRocklin

+0

Да, 100% уверен, что я декомпрессирован, но все равно испытываю ту же ошибку. Я не уверен, что проблема для системы Windows? Я также пробовал на виртуальной машине Ubuntu, все та же проблема. можете ли вы рассказать мне свою экспериментальную среду? – SharpLu