将dask集合异步存储到文件/ CSV

时间:2017-08-24 08:41:07

标签: dask dask-distributed

我正在使用dask.distributed实现各种数据处理管道。通常,原始数据从S3读取,最后处理(大)集合也将在S3上写入CSV。

我可以异步运行处理并监视进度,但我注意到所有将集合存储到文件的to_xxx()方法似乎都是同步调用。其中一个缺点是呼叫阻塞可能会持续很长时间。其次,我不能轻易构建一个完整的图表以便稍后执行。

有没有办法运行,例如to_csv()异步并获取未来的对象而不是阻塞?

PS:我很确定我自己可以实现异步存储,例如:通过将集合转换为delayed()并存储每个分区。但这似乎是一种常见的情况 - 除非我错过了现有的功能,否则在框架中包含这样的内容会很不错。

1 个答案:

答案 0 :(得分:1)

大多数to_*个函数都有compute=True个关键字参数,可以用compute=False替换。在这些情况下,它将返回一系列延迟值,然后您可以异步计算

values = df.to_csv('s3://...', compute=False)
futures = client.compute(values)