使用外部代码处理分布式任务集合
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')
我将输入数据作为单个大文件存储在 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')