基于平面文本fi的分布式dask矩阵

2024-05-11 03:23:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个矩阵的一个纯文本文件(制表符分隔)读入dask数组,使用distributed将数组的块分布到整个集群中。在

(旁白:这与PySpark的^{}方法没有什么不同)

但是,我不清楚如何使用可用的工具将文本文件解析为矩阵结构。在PySpark中,我可以用一个简单的map和一个UDF来完成这项工作,该UDF将一个空格上的每一行拆分并将标记转换为一个float列表,最后将该列表转换为一个[索引]numpy数组。在

我从dask.bag.read_text方法开始,它有一个参数collection,我可以将它设置为False,所以它会给我一堆Delayed期货。如何将这些解析为最终矩阵的行?

from dask.bag import read_text
matrix = read_text(filename.txt, collection = False)

这只返回一个单一的未来。如何为文本文件中的每一行生成一个future?在


Tags: 方法textfalse列表read矩阵数组制表符
1条回答
网友
1楼 · 发布于 2024-05-11 03:23:39

这里有几个步骤:

用read_text

默认情况下,read_text将每个文件视为单个流分区。如果您喜欢将数据分成几部分,那么使用blocksize=关键字参数

futures = db.read_text('filename.txt', collection=False, blocksize=10000000)

将文本列表的期货转换为numpy数组的期货

使用您控制的未来,您可能会创建一个函数,将您的列表转换为numpy数组

^{pr2}$

将期货转换为小额磁盘阵列

我们把每一个未来磁盘阵列在

from distributed.collections import futures_to_dask_arrays

arrays = futures_to_dask_arrays(futures)

将多个数组串联成单个数组

import dask.array as da

array = da.concatenate(arrays, axis=0)

相关问题 更多 >