2

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

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

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

PS。保留在分布式集合模型中也没有必要,但也是可取的,因为对数据的其他操作可能是更简单的 Python 函数,它们逐条处理数据。

4

1 回答 1

3

您可能需要read_bytes函数。这会将文件分成许多块,由分隔符(如结束线)干净地分割。它为您返回指向这些字节块的dask.delayed对象列表。

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

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

>>> sample, blocks = read_bytes('s3://bucket/2015-*-*.csv', delimiter=b'\n')  
于 2017-07-11T19:02:08.920 回答