我开始使用 python 的mrjob将我的一些长期运行的 python 程序转换为 MapReduce hadoop 作业。我已经得到了简单的字数统计示例,并且我在概念上理解了“文本分类”示例。
但是,我在确定解决问题所需的步骤时遇到了一些麻烦。
我有多个文件(大约 6000 个),每个文件有 2 到 800 行。在这种情况下,每一行都是一个简单的以空格分隔的“信号”。我需要比较每个文件中的每一行与所有文件(包括其自身)中的每一行之间的相关性。然后根据相关系数输出结果。
一个文件的示例:
1 2 3 4 2 3 1 2 3 4 1 2
2 2 3 1 3 3 1 2 3 1 4 1
2 3 4 5 3 2 1 3 4 5 2 1
...
我需要将此文件的每一行与其他每个文件中的每一行配对生成......或者如果这会使事情变得更容易,我可以将所有文件连接到一个文件中,但我仍然需要成对迭代。
我了解如何进行计算以及如何使用最终的 reduce 步骤来聚合和过滤结果。我遇到的困难是如何在yield
不读取单个 setp 中的所有文件的情况下将所有成对的项目添加到连续的步骤中?我想我可以提前准备一个输入文件,itertools.product
但这个文件会非常大。