![](/img/trans.png)
[英]When deduping JSON records in a Dask bag, is there a better option than .distinct() - one that reduces memory usage?
[英]Dask bag gets stuck on processing when blocksize is defined, only uses one worker when it's not defined
我正在尝试使用 Dask 在本地处理单个大 (1TB) json 文件。 该文件每行有一个对象。 当我没有在read_text
函数中指定 blocksize 时,代码可以完美运行,但只能在一个 worker 上运行。 这样就只做了一个分区,在仪表盘中只能看到一个任务。 如果我确实指定了blocksize
,所有工人都会得到任务,但他们永远不会继续处理(至少不会在 12 小时内)。 出了什么问题? 我如何让所有工人实际工作?
代码如下:
import dask.bag as db
from dask.distributed import Client, LocalCluster
cluster = LocalCluster(n_workers=4,
threads_per_worker=2,
memory_limit='2GB')
client = Client(cluster)
db.read_text('./data/uncompressed/latest-all.json', blocksize=1e8)\
.map(lambda obj: obj[:-2])\
.map(parse_json)\
.map(prune)\
.filter(lambda obj: obj != None)\
.map(json.dumps)\
.to_textfiles('./data/proc/*.json')
parse_json
和prune
都是没有 IO 的纯 python 函数。
我的第一个猜测是它们正在工作,但是您的功能非常慢。 您可以通过 ...
您还可以考虑更小的块大小,看看这是否有助于更快地移动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.