python是否按列读取文件而不加载到内存中?

qni6mghb  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(271)

我有一个csv文件,包含大约400列+100.000行。我正在尝试在hdinsight hadoop集群中运行mapreduce作业。我的mapreduce的逻辑是计算peason的相关矩阵。
map操作生成每个可能的值对以及每个键。
示例:将此作为输入:

1,2,3
4,5,6

Map器输出为:

keys   pairs
0,1    1,2
0,2    1,3
1,2    2,3
0,1    4,5
0,2    4,6
1,2    5,6

您可以得出结论,Map器输出的大小更多地取决于列的数量,因此也取决于排序阶段的复杂性。这就是为什么我的mapreduce工作失败的原因。
我曾经在以前的Map器脚本中输出完整列表,如下所示:

keys   pairs
0,1    1,2,4,5
0,2    1,3,4,6
1,2    2,3,5,6

但这需要完全读取文件,以便压缩它,然后压缩每对列。在本例中,如果文件足够大,则内存不足。
我考虑过如何读取列而不是行,并一直使用“yield”来优化mapper和sort中的内存使用。
有没有一种方法可以在不将文件完全加载到内存的情况下逐列(给定特定的分隔符)读取文件?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题