使用外部代码处理分布式任务集合

Processing distributed dask collections with external code

我将输入数据作为单个大文件存储在 S3 上。 我希望 Dask 自动切碎文件,分发给工作人员并管理数据流。因此使用分布式集合的想法,例如包.

在每个工作人员上,我都有一个命令行工具 (Java),可以从文件中读取数据。因此,我想将一整块数据写入文件,调用外部 CLI/code 来处理数据,然后从输出文件中读取结果。这看起来像是处理批量数据而不是一次记录。

解决这个问题的最佳方法是什么?是否可以在worker上将分区写入磁盘并作为一个整体进行处理?

PS。留在分布式收集模型中是不必要的,但也是可取的,因为对数据的其他操作可能更简单 Python 逐条处理数据记录的函数。

您可能需要 read_bytes function. This breaks the file into many chunks cleanly split by a delimiter (like an endline). It gives you back a list of dask.delayed 指向那些字节块的对象。

此文档页面上有更多信息:http://dask.pydata.org/en/latest/bytes.html

这是文档字符串中的示例:

>>> sample, blocks = read_bytes('s3://bucket/2015-*-*.csv', delimiter=b'\n')