如何在map reduce程序中获取每个文件中的输入文件名和单词数?

时间:2015-03-23 12:55:44

标签: mapreduce bigdata

例如,有两个带文字的文本文件,我需要在输出格式下面显示如何?请给出想法吗?
1.text1 with words
苹果 苹果 芒果

2.text2 with words
苹果 苹果 芒果

我需要显示这样的输出 文本1 苹果2 芒果1

text2的
apple 2
芒果1


苹果4
芒果2

1 个答案:

答案 0 :(得分:0)

在映射器中将密钥设置为文件名+' |' +单词并向减速器发射。在你的情况下,mapper的输出将是这样的。

(text1|apple,1)
(text1|apple,1)
(text1|mango,1)
(text2|apple,1)
(text2|apple,1)
(text2|mango,1) 

在改组和排序阶段之后,输出将是这样的

(text1|apple,{1,1})
(text1|mango,{1})
(text2|apple,{1,1})
(text2|mango,{1})

在reducer中你可以编写逻辑来计算每个文本文件中的苹果和芒果的数量。(计算数组中坚持数组的值)

要查找全局和,请声明静态变量mangos和apples。使用符号' |'分隔密钥。并计算总和。将总和分配给静态变量。最后将输出写入文本文件