gpt4 book ai didi

hadoop - 如何过滤hadoop mapreduce中文件的记录值?

转载 作者:可可西里 更新时间:2023-11-01 16:17:45 26 4
gpt4 key购买 nike

我正在使用 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

我想删除 file1 的值,这些值在 file2 中具有相同的键。一种方法是将这两个文件作为输入文件,并在映射步骤中生成:(ID, line)。然后在减少步骤中过滤值。但是,我的文件非常非常大,因此我不能这样做。

或者,如果 file1 是输入文件并且在 map 中我打开 file2 并查找该行然后比较值是否有效?但由于我有一百万个 key ,并且对于每个 key 我都必须打开 file1,我认为它会产生过多的 I/O。

我能做什么?

最佳答案

您可以为您的映射器同时输入 file1 和 file2。在映射器中,您会将源(文件 1 或文件 2)添加到记录中。然后使用辅助排序来确保 file2 中的记录始终排在第一位。因此,reducer 的组合输入看起来像这样:

1    file2,1
1 file1,1,2,10
2 file2,2,5
2 file1,2,7,8,5
3 file2,3,9
3 file1,3,9,12

您可以从这里获取 reducer 的设计。

关于hadoop - 如何过滤hadoop mapreduce中文件的记录值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16216986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com