python逐列读取文件而不加载到内存中?

2024-10-02 16:31:43 发布

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

我有一个csv文件,包含大约400列+100000行。 我正在尝试在HDinsight Hadoop集群中运行MapReduce作业。 我的MapReduce的逻辑是计算Peason的相关矩阵。在

map操作生成每个可能的值对以及每个键。在

示例: 作为输入:

1,2,3
4,5,6

映射器输出将是:

^{pr2}$

正如您可以得出的结论,映射器输出的大小更多地取决于列的数量,因此取决于排序阶段的复杂性。这就是为什么我的mapreduce工作失败了。在

我曾经在以前的mapper脚本中输出完整的列表,如下所示:

^{3}$

但这需要完整地读取文件,以便压缩文件,然后压缩每对列。在这种情况下,如果文件足够大,我就会耗尽内存。在

我考虑过读取列而不是行,并一直使用“yield”来优化mapper和sort中的内存使用。在

有没有一种方法可以一列一列地读取一个文件(给定一个特定的分隔符),而不将其完全加载到内存中?


Tags: 文件csv内存hadoop示例map作业集群