我正在使用 MapReduce 中的一个程序。我有两个文件,我想从 file1 中删除 file2 中存在的一些信息。每行都有一个 ID 作为它的键和一些数字(用逗号分隔)作为它的值。
file1:
1 1,2,10
2 2,7,8,5
3 3,9,12
和
file2:
1 1
2 2,5
3 3,9
我想要这样的输出:
output:
1 2,10
2 7,8
3 12
我想删除在 file2 中具有相同键的 file1 的值。一种方法是将这两个文件作为输入文件,并在映射步骤中生成:(ID, line)
. 然后在减少步骤中过滤值。但是,我的文件非常非常大,因此我不能这样做。
或者,如果 file1 是输入文件并且在地图中我打开 file2 并查找该行然后比较值,它会有效吗?但是由于我有一百万个键,并且对于每个键我都必须打开 file1,我认为它会有过多的 I/O。
我能做些什么?